- 论坛徽章:
- 0
|
一台机奔III,512M内存的机器,运行redhat linux 9 ,上装有php4.2.2+ apache1.3.27+mysql4.0.12. mysql定义了配置文件my.cnf ,其中关键的几项参数如下:
[mysqld]
port = 3306
socket = /tmp/mysql.sock
user = mysql
skip-locking
skip-name-resolve
set-variable = key_buffer=128M
set-variable = max_allowed_packet=1M
set-variable = max_connections=1000
set-variable = back_log=500
set-variable = max_connect_errors=10000
set-variable = table_cache=512
set-variable = sort_buffer=1M
set-variable = record_buffer=1M
set-variable = myisam_sort_buffer_size=64M
set-variable = thread_cache=100
set-variable = wait_timeout=60
这样的参数在之前运行的mysql3.23.49上运行的很好,没有出现问题.
但自升级至mysql4后,出现了 too many connections 的错误.而我的服务并没跟以前很大不同,也没有提高什么流量,似乎也不是有人在捣乱攻击(来自相同的ip的请求或连接都不多).因此我估计是mysql保持了连接,没有timeout,有一点我觉得奇怪的是我show global variables 时看到的wait_timeout值是正确的60, 而show variables 看到的wait_timeout值是28800(缺省) ,不知是否有问题?
我的数据库连接都是使用unix domain socket的,在不出现too many connections错误的情况下也可以从netstat -na 命令中看到有大量的(大概375个)已经建立的连接如下:
unix 2 [ ACC ] STREAM LISTENING 388860503 /tmp/mysql.sock
unix 2 [ ] STREAM CONNECTED 271154000
unix 2 [ ] STREAM CONNECTED 271153999
unix 2 [ ] STREAM CONNECTED 271153997
unix 2 [ ] STREAM CONNECTED 271153991
unix 2 [ ] STREAM CONNECTED 271153923
unix 2 [ ] STREAM CONNECTED 271153894
unix 2 [ ] STREAM CONNECTED 271153825
unix 2 [ ] STREAM CONNECTED 271153813
unix 2 [ ] STREAM CONNECTED 271153392
这应该是不正常的,而且我观察到这些连接一直保持,并不会超时退出.之前的mysql版本不会出现这个问题. 请各位大侠指点迷津,感激不尽! |
|