我们在一个页面上使用 ab (apachebench) 对我们的一个站点进行基准测试,该页面创建 MySQL 连接、查询然后关闭连接(通过 PHP)。
我们已经硬编码了我们的 my.cnf,max_connections 限制为 500。
当我们运行压力测试时,MySQL 似乎从未达到我们指定的连接限制,尽管我们的脚本返回了“无法连接到数据库”类型的错误。就好像 MySQL 一次打开的连接数不能超过约 237 个。
这是我们当前的 my.cnf:
[mysqld]
max_connections = 500
port = 3306
socket = /var/mysql/mysql.sock
skip-external-locking
key_buffer_size = 384M
max_allowed_packet = 1M
sort_buffer_size = 2M
read_buffer_size = 2M
read_rnd_buffer_size = 8M
myisam_sort_buffer_size = 64M
thread_cache_size = 8
query_cache_size = 128M
thread_concurrency = 8
max_heap_table_size = 512M
tmp_table_size = 512M
table_cache = 2048
用户限制:
$ ulimit -a
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
file size (blocks, -f) unlimited
max locked memory (kbytes, -l) unlimited
max memory size (kbytes, -m) unlimited
open files (-n) 16384
pipe size (512 bytes, -p) 1
stack size (kbytes, -s) 8192
cpu time (seconds, -t) unlimited
max user processes (-u) 1250
virtual memory (kbytes, -v) unlimited
问题似乎出在 PHP 或 MySQL 上(当然也可能是我们配置错误)。
非常感谢任何帮助、建议和提示 - 在此先感谢。