我在linux机器上运行的mysql只有8核和16 am的内存。所有连接都来自同一网络中另一台机器上运行php和codeigniter的web服务器。
我无法在mysql上获得超过150个连接。
我的my.cnf是:
[mysqld]
user=mysql
port = 3306
socket = /tmp/mysql.sock
datadir = /usr/local/mysql/var/
skip-external-locking
max_connections=500
max_user_connections=500
open-files-limit = 500
key_buffer_size = 2048M
max_allowed_packet = 32M
table_open_cache = 512
sort_buffer_size = 2M
read_buffer_size = 2M
read_rnd_buffer_size = 16M
myisam_sort_buffer_size = 128M
thread_cache_size = 250
table_definition_cache = 1024
query_cache_size = 32M
query_cache_limit = 32M
table_cache=1024
max_heap_table_size=1024M
key_buffer=2048M
wait_timeout=60
thread_concurrency = 16
long_query_time = 1
tmp_table_size=256M显示状态将max_connections和max_user_connections返回为500。
因为mysql说连接限制是500,我认为在PHP、apache或codeigniter中有其他设置限制了对mysql的请求,但我找不到任何设置。我在谷歌上搜索了几天,试图找到答案,但一无所获。
以上提到的软件是否有限制?我会张贴配置,如果有必要。
谢谢。
发布于 2012-11-21 01:57:24
检查httpd.conf中的Apache工作进程(ServerLimit和MaxClients)的最大数量。假设每个工作进程的连接数是固定的,则可能会达到工作进程的最大数目,因此不会请求新的MySQL连接。
发布于 2013-11-14 04:00:16
抱歉,我在谷歌上找到了这个,但你的配置是foobar
max_connections=500
open-files-limit = 500
table_open_cache = 512
table_definition_cache = 1024open-files-limit: 500 #;不太好!
table_open_cache: 512...* 2+ open-每个表的文件数= 1024个open-使用的最小文件数
max_connections: 500每个打开的连接都会启动一个新的文件句柄进行缓冲。
您的mysql将打开大约130个表(核心表),只剩下240个文件句柄可以在数据查询和连接之间共享。对于每个具有表查询的连接,都会消耗3+文件句柄(连接、数据表、索引文件)。这在你获得150个连接之前很久就让你打开的文件变大了。对于这种数据库使用,open-files-limit需要启动>2048。
更多帮助:
show global status like '%open%';
show global status like '%onnect%';自己查看有多少文件/连接在实际使用中。某些操作系统(Windows XP)硬限制文件/网络连接。试着用谷歌搜索"mysql 'YOUR-OS‘150 connections“,看看这是不是限制因素。
https://stackoverflow.com/questions/13479156
复制相似问题