这是我一位朋友的论坛出现的错误,因为他论坛中有个聊天室,在线人数还算可以.当在线超过150~200的时候,会频繁出现
Discuz! info: Can not connect to MySQL serverTime: 2010-1-29 11:47am
Script: /index.phpError: Can't connect to local MySQL server through socketErrno.: 2002Similar error report has been dispatched to administrator before.
以上的错误,他用的是Discuz的论坛程序,不过我估计是由于聊天室查询次数过多引起的.一般来说,2002错误都是刚装mysql的时候,没有配置好sock的路径引起的,而这错误却是出现在网站浏览的高峰期,特别是聊天室的高峰期.初步认定是如此高的在线人数,没有优化Mysql引起的,还有一点,由于跨境网络较慢(忘记说明,服务器放置地在国外)引起的查询超时.服务器内存为2G.但Mysql的配置却过于吝啬了,以下贴出基本分配:
[mysqld]
port = 3306
socket = /usr/local/mysql/tmp/mysql.sock
skip-locking
key_buffer = 16M
max_allowed_packet = 1M
table_cache = 64
sort_buffer_size = 512K
net_buffer_length = 8K
read_buffer_size = 256K
read_rnd_buffer_size = 512K
myisam_sort_buffer_size = 8M
max_connections=1000
我认为应该修改key_buffer = 256M,max_allowed_packet = 2M,table_cache = 512,并修改wait_timeout=60为此,我还有所疑惑,是否真正能解决此问题,是否那个聊天室程序对于mysql的查询是否优化,我也不清楚.毕竟不是我的.所以,想听听各位的见解.希望花上朋友们几分钟的时间,看看此问题,发表一下您的见解.答者皆有得分.十分感谢.
Discuz! info: Can not connect to MySQL serverTime: 2010-1-29 11:47am
Script: /index.phpError: Can't connect to local MySQL server through socketErrno.: 2002Similar error report has been dispatched to administrator before.
以上的错误,他用的是Discuz的论坛程序,不过我估计是由于聊天室查询次数过多引起的.一般来说,2002错误都是刚装mysql的时候,没有配置好sock的路径引起的,而这错误却是出现在网站浏览的高峰期,特别是聊天室的高峰期.初步认定是如此高的在线人数,没有优化Mysql引起的,还有一点,由于跨境网络较慢(忘记说明,服务器放置地在国外)引起的查询超时.服务器内存为2G.但Mysql的配置却过于吝啬了,以下贴出基本分配:
[mysqld]
port = 3306
socket = /usr/local/mysql/tmp/mysql.sock
skip-locking
key_buffer = 16M
max_allowed_packet = 1M
table_cache = 64
sort_buffer_size = 512K
net_buffer_length = 8K
read_buffer_size = 256K
read_rnd_buffer_size = 512K
myisam_sort_buffer_size = 8M
max_connections=1000
我认为应该修改key_buffer = 256M,max_allowed_packet = 2M,table_cache = 512,并修改wait_timeout=60为此,我还有所疑惑,是否真正能解决此问题,是否那个聊天室程序对于mysql的查询是否优化,我也不清楚.毕竟不是我的.所以,想听听各位的见解.希望花上朋友们几分钟的时间,看看此问题,发表一下您的见解.答者皆有得分.十分感谢.
另外,要经常看看error日志
个人感觉应该从他的mysql配置文件入手,对于在线人数过高的网站,占用的httpd线程和数据库查询次数也颇高.
100622 2:12:00 InnoDB: Shutdown completed; log sequence number 0 43665
100622 2:12:00 [Note] /usr/local/mysql/libexec/mysqld: Shutdown complete100622 02:12:00 mysqld ended100622 02:13:10 mysqld started
100622 2:13:11 InnoDB: Started; log sequence number 0 43665
100622 2:13:11 [Note] /usr/local/mysql/libexec/mysqld: ready for connections.
Version: '5.0.33-log' socket: '/usr/local/mysql/tmp/mysql.sock' port: 3306 Source distribution
100622 2:19:07 [Note] /usr/local/mysql/libexec/mysqld: Normal shutdown100622 2:19:07 InnoDB: Starting shutdown...
100622 2:19:09 InnoDB: Shutdown completed; log sequence number 0 43665
100622 2:19:09 [Note] /usr/local/mysql/libexec/mysqld: Shutdown complete100622 02:19:09 mysqld ended100622 02:19:09 mysqld started
100622 2:19:09 InnoDB: Started; log sequence number 0 43665
100622 2:19:09 [Note] /usr/local/mysql/libexec/mysqld: ready for connections.
Version: '5.0.33-log' socket: '/usr/local/mysql/tmp/mysql.sock' port: 3306 Source distribution
100625 1:30:33 [Note] /usr/local/mysql/libexec/mysqld: Normal shutdown100625 1:30:33 InnoDB: Starting shutdown...
nnoDB: Shutdown completed; log sequence number 0 43665
100625 1:30:36 [Note] /usr/local/mysql/libexec/mysqld: Shutdown complete100625 01:30:36 mysqld ended100625 01:31:47 mysqld started
100625 1:31:48 InnoDB: Started; log sequence number 0 43665
100625 1:31:49 [Note] /usr/local/mysql/libexec/mysqld: ready for connections.
Version: '5.0.33-log' socket: '/usr/local/mysql/tmp/mysql.sock' port: 3306 Source distribution
100625 1:33:25 [Note] /usr/local/mysql/libexec/mysqld: Normal shutdown100625 1:33:25 InnoDB: Starting shutdown...
100625 1:33:29 InnoDB: Shutdown completed; log sequence number 0 43665
100625 1:33:29 [Note] /usr/local/mysql/libexec/mysqld: Shutdown complete100625 01:33:29 mysqld ended100625 01:33:29 mysqld started
100625 1:33:29 InnoDB: Started; log sequence number 0 43665
100625 1:33:30 [Note] /usr/local/mysql/libexec/mysqld: ready for connections.
Version: '5.0.33-log' socket: '/usr/local/mysql/tmp/mysql.sock' port: 3306 Source distribution
Tue Jun 29 07:51:26 CEST 2010
他的wait_timeout=120 个人感觉够长了...再长点有点...