未来往事
学会感谢你身边的一切、感谢你身边的每一个人,善待他人,即是最好的善待自己。 [2017年 第30周/共52周]

Apache Rewrite规则转Nginx Rewrite规则

不知道怎么把Apache Rewrite 规则转换成Nginx Rewrite配置的童鞋可以通过一个自动化的linux命令行工具apache2nginx进行Rewrite规则转换。

使用apache2nginx能将apache的配置文件转换成相应的nginx的配置文件。源代码在github上:
https://github.com/nhnc-nginx/apache2nginx

使用方法:
apache2nginx -f /etc/httpd/conf/httpd.conf  将生成 nginx.conf


另外还可以在线转换:
Apache转换到Nginx Rewrite:
http://www.anilcetin.com/convert-apache-htaccess-to-nginx/

Apache、Lighttpd、IIS转换到Nginx Rewrite:
http://www.onexin.net/rewr......
+阅读全文

Discuz多站点之间实现积分兑换(兑入/兑出)方法

通过ucenter后台我们可以看到有个积分兑换功能项,本文基于DiscuzX2.5环境简要介绍下该功能。

系统信息约定:
DiscuzX 程序版本:Discuz! X2.5
UCenter 客户端版本:UCenter 1.6.0
A论坛的地址:http://a.fity.cn
B论坛的地址:http://b.fity.cn

比如论坛A和论坛B,安装程序自己选择,不同文件夹或者B放在A文件夹里面。
我的是IIS服务,所以你得先会配置好,具体网上搜索。B可以设置顶级域名,设置方法和A一样。

一、首先完整安装A论坛,地址为a.fity.cn,包含UC。设置好各项积......
+阅读全文

Nginx Http 500错误解决

今天朋友租用的VPS Web服务出现了问题,访问网站报Nginx Http 500错误,但是php info测试页面正常,相关详细描述信息如下:
操作系统:Debian
Web服务:Nginx+PHP(Fast-cgi)+MySQL

后来查看了相关日志也检查了相关的配置没发现什么问题,就在该站点下放入了一个php info测试页面,发现访问正常。但是一访问网站程序就报Http 500错误,这里开始是不是程序本身的问题了,于是把php的错误提示功能打开后发现页面不再是500错误了,然后再按提示的错误信息解决了问题。

......
+阅读全文

电脑系统重启后打印机消失问题解决

电脑系统重启后打印机消失解决方法
问题描述:
电脑重启后,设备和打印机中的打印机消失,并且无法使用打印机,但每次重新安装驱动后又可以使用。

原因分析:
Print Spooler----文件打印服务开机时未正常启动或启动类型设置为手动所导致。

解决方法:
在windows服务(开始--运行--输入“services.msc”可打开‘服务’)中重新启动Print Spooler服务或将Print Spooler服务设置为“自动”,服务状态置为“启动”即可。
......
+阅读全文

Discuz!积分同步/多站点用户积分提醒消息数据同步

Discuz多论坛用户积分同步 Discuz多论坛积分同步 Discuz多站点用户信息数据同步
文章已有最新版:http://fity.cn/post/457/
最后更新:2014-02-10 12:08
     关于Discuz积分同步,近期将重新发布一篇新文章介绍在discuzX3中实现discuz用户积分同步。本文bug不在修复。
最后更新:2013-04-23 22:19
     修复了已知bug。如使用,请确定自己对Discuz或mysql服务器有所了解或联系未来往事获取帮助。另外就是目前Discuz已发布X3测试版产品和Discuz的程序版本的生命周期时间,建议你往高版本升级。

录入时间:2013-04-10 23:55
前段时间有几个discuz上面的网友在QQ上问针对discuzX1.5-X2.0多论坛、站点环境下如何同步各个站点的用户相关数据信息(例如:积分、消息、提醒、勋章获得情况等),确保多站点用户数据的一致性,提升用户体验,于是整理了这篇文章。如果要实现这样的结果,很显然需要共用用户数据信息,当然从程序或是服务器方面综合来说实现方法也有很多种。

本文基于Discuz!X2.0版本程序、独立主机(如果为虚拟主机需要修改部分内容)环境所写,阐述的方法是通过Discuz的分布式部署+MySQL触发器实现这一需求。
Discuz在X1.0版本发布以后开始支持在多个数据库之间操作,到X2.0版本可以看到分布式MySQL部署已经有个趋势但依然并不完善、存在诸多的bug。官方的回复是目前X2.0依然不支持分布式部署。不过现在好多站点都已经升级到X2.5版本,X2.5版本官方给出的产品文档中已指出支持分布式MySQL部署,X3.0中官方曝光支持站点热点数据缓存层和数据库分布式部署,在架构、性能、移动互联网方面逐渐增强。

闲话不多说了,下面进入正题:

环境相关信息约定:
Discuz版本:DiscuzX2.0(未集成UCenter Home)
                   UCenter1.6.0(单独的域名:uc.fity.cn)
站点域名:a.fity.cn 和 b.fity.cn(这里我们需要实现这两个站点的用户积分同步)
MySQL版本:5.0.x
数据库相关信息:
    a.fity.cn 使用MySQL数据库:bbs_a
    b.fity.cn 使用MySQL数据库:bbs_b
    积分同步的表存储到公共数据库:memberdata(该库存储用户的信息和积分,第二主库<读写>,部分页面依然读配置文件中定义的db1下的用户表)
补充信息:由上面的介绍,我们知道在Discuz未来新版本中已经对分布式部署有了更好的支持,所以这里我们考虑到未来架构的移植及可扩展性把需要同步的数据表单独存储到一个公共的数据库memberdata中,实现过程简单示意图:
点击在新窗口中浏览此图片


一、暂时对站点进行关闭操作,以确保各数据库暂时不再被写入
  后台——关闭站点

二、额外了解一些基础:Discuz主要性能优化瓶颈表
  • member表
  • Post表
  • Thread表点击数
  • DIY模块数据更新
  • 帖子点评和评分功能的

Discuz!X系统功能丰富,数据表多达200多个,在实际生产环境中对各种功能的深度使用各不一样,导致每个数据表都有可能承受高并发的访问压力,当出现这种情况时,需要将负载大的数据表及其相关数据表单独部署,以增强系统的负载能力。
这里我们先来看下Discuz!X2.5的分布式部署。Discuz!X2.5理论上支持以表为单位的数据库分布式部署,部分无法独立部署的表将与其相关表被合并为最小部署单位。以下图为例:
点击在新窗口中浏览此图片

三、在Discuz!X2.0中配置MySQL数据库分布式部署,这里我们把pre_common_member和pre_common_member_count两张表部署到第二台数据库服务器(公共用户信息数据库),编辑a.fity.cn和b.fity.cn站点的config_global.php配置文件,CONFIG DB配置区域参考如下内容:
代码中暴露了php脚本代码,未能正常显示,请联系未来往事更正文章……


至此,Discuz!X2.0中的MySQL数据库分布式部署几乎完成了。
需要注意:这里我们需要确保`memberdata`库下的表的信息数据是最终数据(最完整的数据),同时同步给a.fity.cn和b.fity.cn各一份(这里可能在同步一份到各个站点,这样公共库memberdata下的pre_common_member和pre_common_member_count两张表的数据和各个论坛库库下的pre_common_member和pre_common_member_count两张表不是重复了吗?分布式还有什么意义?当你部署完成后就知道原因:同为主库,Discuz!X2.0下设计理念是第二服务器上`memberdata`库pre_common_member和pre_common_member_count两张表可读写,但部分页面读取依然会读第一服务器上的数据,这里不再过多赘述。如果可以建议更新到新版本discuz程序或自行修改程序代码进行调整,这里本文重点介绍的是通过MySQL触发器实现各表数据同步。)如果你的站点数据表之间在这里没有同步,后面完成后你可能会遇到如下错误信息:
点击在新窗口中浏览此图片

更多配置信息请至官方阅读“Discuz!X2.5新版架构优化说明——X2.5的新程序架构”:
http://dev.discuz.org/wiki/index.php

四、利用MySQL触发器将`memberdata`库下pre_common_member和pre_common_member_count两张表的数据同步给a.fity.cn和b.fity.cn站点
+阅读全文

PHP has encountered an Access Violation at 02B7ADD9 错误解决

收到部分站点故障反馈错误信息:PHP has encountered an Access Violation at 02B7ADD9/7C959E6A/02D3DB76 或 直接呈现空白页面,系统为开源程序“禅道管理系统”,此问题为网站运行产生缓存服务器内存负荷过大导致,这里记录下本次故障解决的方法。

在php.ini配置文件中将 session.save_path和session.cookie_path 前面的注释符;去除并设置置为:
session_save_path = D:\temp        //路径根据自己的实际情况定义
session.cookie_path = D:\te
......
+阅读全文

MySQL触发器语句代码在线生成-源码(PHP版)

MySQL触发器 触发程序语句代码自动生成源码(PHP版),实现数据同步

点击进入在线编解码工具页面>>>
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-
......
+阅读全文

MySQL触发器 触发程序 详解及实例

MySQL触发程序--触发器(TRIGGER)详解及实例
触发程序是与表有关的命名数据库对象,当表上出现特定事件时,将激活该对象。Mysql5之后开始支持触发器,并且在创建触发器后会自动在/var/lib/mysql目录下生成TRG以及TRN文件(Linux下)你必须拥有足够的权限才能创建触发器(CREATE TRIGGER),如果你已经是root用户,那么就足够了。这跟SQL的标准有所不同。

MySQL触发器 触发程序语句代码在线生成

基本语法:
......
+阅读全文

discuz退出时不点清理痕迹就无法退出或很慢解决

Discuz X2++ 不点清理痕迹就无法退出登录问题解决

例如:我们经常看到这个界面,没有跳转url连接,等待很长时间还是停留在这个处理页面
点击在新窗口中浏览此图片

修改文件:/config/config_global.php,设上cookie作用域,如域名为www.fity.cn
  1. // --------------------  CONFIG COOKIE
......
+阅读全文

discuz登出处理页面清除痕迹及跳转地址 修改

discuz用户退出操作页面清除痕迹及跳转url地址修改
点击在新窗口中浏览此图片
这里我们知道,如果在这个处理页面你不点击“清除痕迹”那么程序继续执行下去会跳转到你之前浏览的页面,如果你这里点击了“清除痕迹”程序接下来则会跳转当前站点的主页(如portal.php首页或forum.php论坛页面)。

文件:source\language\lang_message.php
  1. 'logout_succ
......
+阅读全文

MySQL 多实例配置指南

Mysql具有一次安装可以运行多个实例的功能,简单的说,MySQL可以以多实例的方式,实现一台服务器,运行在不同端口不同数据文件的MySQL,它们是相互独立的。每个实例的datadir,pid,port,socket是不同的。本文将通过两种方法阐述MySQL多实例的配置。如果你看到这篇文章,未来往事推荐选择方法一进行实施MySQL多实例配置,便于后期的自动化、高效运维管理。

为什么要这样做?这样做的好处是什么?
1、提高CPU的利用率;
2、其实配置mysql多实例运行就是新建数据库存放的位置和监听的socket端口,这样当client连接时就会经由不同的端口访问新建的数据库。创建多实例可以通过下载源码重新编译安装,这样做的好处是可以加入新数据库需要的特别配置。
…………………………


方法/方案一:
首先我们明确一些约定信息:
系统约定:CentOS 6.3
MySQL程序相关信息:
mysql version:5.5.20
basedir:/usr/local/webserver/mysql5520
datadir:/data/mysql_3306    //实例一
             /data/mysql_3307    //实例二
sysconfdir:/etc/my.cnf

一、基础知识:
如果选择使用该方法,首先我们需要了解下mysqld_multi:
mysqld_multi是管理多个mysqld的服务进程,这些服务进程程序用不同的unix socket或是监听于不同的端口,通过简单的命令,它可以启动,关闭和报告所管理的服务器的状态 。(也可以用此在一台机器上做mysql的主从复制)。

二、mysql5.5.20安装
这里不再赘述,下载源码后
cmake -<option>... && make && make install

三、多实例配置
1、建立配置文件
下面是本例中的配置文件my.cnf:
[client]
#password       = your_password
port            = 3306
socket          = /tmp/mysql/mysqld.sock
# MySQL Server

[mysqld_multi]
mysqld = /usr/local/webserver/mysql5520/bin/mysqld_safe
mysqladmin = /usr/local/webserver/mysql5520/bin/mysqladmin
log  = /var/log/mysqld_multi.log
user = multi_admin
password = fity@2013

[mysqld1]
port            = 3306
basedir         = /usr/local/webserver/mysql5520
datadir         = /data/mysql1
socket          = /tmp/mysql/mysqld3306.sock
#thread_concurrency  = 8
skip-external-locking
key_buffer_size = 512M
max_allowed_packet = 1024M
table_open_cache = 2048
sort_buffer_size = 8M
read_buffer_size = 2M
read_rnd_buffer_size = 8M
myisam_sort_buffer_size = 64M
thread_cache_size = 64
query_cache_type = 0
#query_cache_size = 32M
query_cache_size = 0M
query_cache_limit = 2M
thread_concurrency = 8
skip-name-resolve
skip-slave-start
wait_timeout = 600
default-storage-engine  = MyISAM
connect_timeout=30
max_user_connections = 200
max_connections = 1000
max_connect_errors = 10000
binlog_format = mixed
max_binlog_size = 128M
binlog_cache_size = 4194304
tmp_table_size = 256M
max_heap_table_size = 64M
#tmpdir = /data/3306mysql/tmp
#slave_load_tmpdir=/tmp
slow-query-log-file = /data/log/mysql/slowquery.log
long_query_time = 4
log-queries-not-using-indexes = true
log-slave-updates
init-connect = 'set names utf8'
log-bin=mysql-bin
server-id   = 1
#set-variable = max_connections=1000
net_buffer_length = 8K
myisam_sort_buffer_size = 8M
back_log = 500
expire_logs_days = 4
lower_case_table_names = 1
join_buffer_size = 4M


[mysqld2]
port            = 3307
basedir         = /usr/local/webserver/mysql5520
datadir         = /data/mysql2
socket          = /tmp/mysql/mysqld3307.sock
#thread_concurrency  = 8
skip-external-locking
key_buffer_size = 512M
max_allowed_packet = 1024M
table_open_cache = 2048
sort_buffer_size = 8M
read_buffer_size = 2M
read_rnd_buffer_size = 8M
myisam_sort_buffer_size = 64M
thread_cache_size = 64
query_cache_type = 0
#query_cache_size = 32M
query_cache_size = 0M
query_cache_limit = 2M
thread_concurrency = 8
skip-name-resolve
skip-slave-start
wait_timeout = 600
default-storage-engine  = MyISAM
connect_timeout=30
max_user_connections = 200
max_connections = 1000
max_connect_errors = 10000
binlog_format = mixed
max_binlog_size = 128M
binlog_cache_size = 4194304
tmp_table_size = 256M
max_heap_table_size = 64M
log-slave-updates
init-connect = 'set names utf8'
log-bin=mysql-bin
server-id   = 1
net_buffer_length = 8K
myisam_sort_buffer_size = 8M
back_log = 500
expire_logs_days = 4
lower_case_table_names = 1
join_buffer_size = 4M

[mysqldump]
quick
max_allowed_packet = 1024M
[mysql]
no-auto-rehash
[isamchk]
key_buffer = 256M
sort_buffer_size = 256M
read_buffer = 2M
write_buffer = 2M
[myisamchk]
key_buffer_size = 256M
sort_buffer_size = 256M
read_buffer = 2M
write_buffer = 2M
[mysqlhotcopy]
interactive-timeout = 600

由上面的配置文件我们可以看到这里我们在本机配置了两个MySQL实例:
MySQL实例一 -- [mysqld1]数据库实例信息:
datadir:/data/mysql1
port:3306
socket:/tmp/mysql/mysqld3306.sock
开启了MySQL慢查询日志记录

MySQL实例二 -- [mysqld2]数据库实例信息:
datadir:/data/mysql2
port:3307
socket:/tmp/mysql/mysqld3307.sock
未开启MySQL慢查询日志记录

根据以上的配置信息,可知我们配置了mysqld1,mysqld2两个mysql实例,每个实例都指定了不同的连接端口(是3306——3307)和数据存储路径(datadir所指定的就是它们各自数据的存储路径)等等一些其他的信息。

2、建立需要的文件夹和初始化数据库
[mysqld1]是一个默认的,在我们安装mysql时已经有了,所以不用管它。接下来我们要配置的是[mysqld2]
(1)建立[mysqld2]实例的数据存储目录
#mkdir /data/mysql2 -p
#chown mysql.mysql /data/mysql2

(2)初始化[mysqld2]实例的数据库:
你可以把默认的mysql数据库复制过来,也可以通过mysql工具重新初始化一个数据库,本例中是重新初始化的[mysqld2]实例数据库:
#/usr/local/webserver/mysql5520/scripts/mysql_install_db --user=mysql --basedir=/usr/local/webserver/mysql5520/ --datadir=/data/mysql2
备注:老版本mysql的mysql_install_db位于安装目录下bin中

3、管理mysql多实例:启动/关闭
mysqld_multi [OPTIONS] {start|stop|report} [GNR,GNR,GNR...]
mysqld_multi [OPTIONS] {start|stop|report} [GNR-GNR,GNR,GNR-GNR,...]

如:
#只启动第一个mysql实例服务,相关文件由my.cnf中[mysqld1]设定
#/usr/local/webserver/mysql5520/bin/mysqld_multi --defaults-extra-file=/etc/my.cnf start 1

#只停止第一个mysql服务,相关文件由my.cnf中[mysqld1]设定
#/usr/local/webserver/mysql5520/bin/mysqld_multi --defaults-extra-file=/etc/my.cnf stop 1  

#启动第1至2个mysql实例服务,本例中的全部mysql实例
#/usr/local/webserver/mysql5520/bin/mysqld_multi --defaults-extra-file=/etc/my.cnf start 1-2

然后,可以看到两个MySQL实例都已经成功的启动了
# netstat -lntp &#124; grep mysql
tcp        0      0 0.0.0.0:3306                0.0.0.0:*                   LISTEN      21955/mysqld        
tcp        0      0 0.0.0.0:3307                0.0.0.0:*                   LISTEN      23281/mysqld

开机启动:
#/etc/rc.local
/usr/local/webserver/mysql/bin/mysqld_multi --defaults-extra-file=/etc/my.cnf start 1-2

4、初始化[mysqld2]实例数据库的root密码:
# mysql -u root -P3307 -S /tmp/mysql/mysqld3307.sock
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY '123456';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456';
flush privileges;
quit

5、分别在[mysqld1]实例和[mysqld2]实例中建立多实例管理用户multi_admin
grant shutdown on *.* to 'multi_admin'@'localhost' identified by 'fity@2013';
flush privileges;

这里需要注意的是:这个用户和密码需要在两个实例中都有且赋权,否则无法关闭实例。

6、测试
登录mysql服务器,看数据库是否正确加载,权限是否正确
#mysql -u root -p123456 -P3306 -S /tmp/mysql/mysqld3306.sock  //登录mysql实例1
#mysql -u root -p123456 -P3307 -S /tmp/mysql/mysqld3307.sock  //登录mysql实例2

如果不指定socket路径,可能你会收到服务器抛出的如下错误:
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql/mysqld.sock' (2)

分析:个人认为出现这个错误是,默认会去找mysql.sock这个文件,而因为此物理机器上运行的是多个实例,所以这个文件不存在。
当然你可以查阅本博客这篇文章以了解mysql的连接方式及通信原理:《mysql连接类型与socket通信原理说明》http://fity.cn/post/348/



方法/方案二:
+阅读全文

mysql连接类型与socket通信原理说明

MySQL连接类型中的localhost与127.0.0.1、IP区别:
localhost与127.0.0.1的区别是什么?相信有人会说是本地ip,曾有人说,用127.0.0.1比localhost好,可以减少一次解析。 看来这个入门问题还有人不清楚,其实这两者是有区别的。

NO.1 - 普通接说:
localhost也叫local ,正确的解释是:本地服务器
127.0.0.1在windows等系统的正确解释是:本机地址(本机服务器)

NO.2:
localhot(local)是不经网卡传输!这点很重要,它不受网络防火墙和网卡相关的的限制。
127.0.0.1是通过网卡传输,依赖网卡,并受到网络防火墙和网卡相关的限制。
一般设置程序时本地服务用localhost是最好的,localhost不会解析成ip,也不会占用网卡、网络资源。
有时候用localhost可以,但用127.0.0.1就不可以的情况就是在于此。猜想localhost访问时,系统带的本机当前用户的权限去访问,而用ip的时候,等于本机是通过网络再去访问本机,可能涉及到网络用户的权限。

NO.3 - MySQL被连接时主机类型:
1、 mysql -h 127.0.0.1 的时候,使用TCP/IP连接,
mysql server 认为该连接来自于127.0.0.1或者是"localhost.localdomain"
2、mysql -h localhost 的时候,是不使用TCP/IP连接的,而使用Unix socket;
此时,mysql server则认为该client是来自"localhost"

在mysql权限管理中的"localhost"有特定含义:
—— MySQL手册 5.6.4 ..... A Host value may be a hostname or an IP number, or 'localhost' to indicate the local host.

注意:虽然两者连接方式有区别,但当localhost 为默认的127.0.0.1时,两种连接方式使用的权限记录都是以下的记录(因为记录在前,先被匹配)
Host: localhost
User: root


MySQL连接类型证明:
# mysql -h 127.0.0.1  -u root -pfity.cn#123
ERROR 2003 (HY000): Can't connect to MySQL server on '127.0.0.1' (111)[需要指定端口,反之收到这个错误]

# mysql -h 127.0.0.1 -P 3307 -u root -pfity.cn#123
mysql> status;
--------------
mysql  Ver 14.12 Distrib 5.0.95, for redhat-linux-gnu (i686) using readline 5.1

Connection id:          1599
Current database:
Current user:           root@127.0.0.1
SSL:                    Not in use
Current pager:          stdout
Using outfile:          ''
Using delimiter:        ;
Server version:         5.1.48-log Source distribution
Protocol version:       10
Connection:             127.0.0.1 via TCP/IP  //注意这里
Server characterset:    latin1
Db     characterset:    latin1
Client characterset:    latin1
Conn.  characterset:    latin1
TCP port:               3307
Uptime:                 5 hours 54 min 48 sec

Threads: 1  Questions: 5432  Slow queries: 1619  Opens: 72  Flush tables: 1  Open tables: 65  Queries per second avg: 0.255
--------------

# mysql -h 192.168.1.246  -u root -pfity.cn#123
ERROR 2003 (HY000): Can't connect to MySQL server on '192.168.1.246' (111)[需要指定端口,反之收到这个错误]

# mysql -h 192.168.1.246 -P 3307 -u root -pfity.cn#123
mysql> status;
--------------
mysql  Ver 14.12 Distrib 5.0.95, for redhat-linux-gnu (i686) using readline 5.1

Connection id:          1598
Current database:
Current user:           root@192.168.1.246
SSL:                    Not in use
Current pager:          stdout
Using outfile:          ''
Using delimiter:        ;
Server version:         5.1.48-log Source distribution
Protocol version:       10
Connection:             192.168.1.246 via TCP/IP    //注意这里
Server characterset:    latin1
Db     characterset:    latin1
Client characterset:    latin1
Conn.  characterset:    latin1
TCP port:               3307
Uptime:                 5 hours 53 min 54 sec

Threads: 1  Questions: 5428  Slow queries: 1619  Opens: 72  Flush tables: 1  Open tables: 65  Queries per second avg: 0.255
--------------

# mysql -h localhost  -u root -pfity.cn#123[连接OK]

# mysql -h localhost -P 3307 -u root -pfity.cn#123
mysql> status;
--------------
mysql  Ver 14.12 Distrib 5.0.95, for redhat-linux-gnu (i686) using readline 5.1

Connection id:          1600
Current database:
Current user:           root@localhost
SSL:                    Not in use
Current pager:          stdout
Using outfile:          ''
Using delimiter:        ;
Server version:         5.1.48-log Source distribution
Protocol version:       10
Connection:             Localhost via UNIX socket    //注意这里
Server characterset:    latin1
Db     characterset:    latin1
Client characterset:    latin1
Conn.  characterset:    latin1
UNIX socket:            /var/lib/mysql/mysql.sock
Uptime:                 5 hours 56 min 18 sec

Threads: 1  Questions: 5436  Slow queries: 1619  Opens: 72  Flush tables: 1  Open tables: 65  Queries per second avg: 0.254
--------------
+阅读全文