Skip to main content
 首页 » 编程设计

mysql之由于配置错误,MYSQL数据库频繁崩溃

2025年12月25日46artech

我刚刚将网站移至L​​inode,目前正在使用其1 GB RAM计划。默认情况下,mysql用户数设置为100。这导致Too many connections错误。

我借助this再次编辑了mysql设置。但是,现在数据库几乎每天都崩溃!

这是我当前的mysql设置:-

key_buffer              = 100M 
max_allowed_packet      = 1M 
thread_stack            = 128K 
thread_cache_size       = 8 
myisam-recover         = BACKUP 
max_connections        = 150 
table_cache       ​ ​     = 1024​ 
query_cache_limit       = 300M 
query_cache_size        = 300M ​ 
max_allowed_packet      = 16M 
key_buffer              = 100M 

谁能建议我一些更改或我的数据库崩溃如此频繁的原因?我还可以按需添加有关服务器的更多详细信息。

编辑

我到处都添加了mysql_close($ con),但这以某种方式进一步增加了我网站的问题。连接数呈指数增长,如下所示:-
mysql> show status like '%onn%'; 
+--------------------------+-------+ 
| Variable_name            | Value | 
+--------------------------+-------+ 
| Aborted_connects         | 48    | 
| Connections              | 1634  | 
| Max_used_connections     | 8     | 
| Ssl_client_connects      | 0     | 
| Ssl_connect_renegotiates | 0     | 
| Ssl_finished_connects    | 0     | 
| Threads_connected        | 4     | 
+--------------------------+-------+ 
7 rows in set (0.00 sec) 

谢谢 !

请您参考如下方法:

如果您不关闭连接,那么显然这将导致数据库最终崩溃。重新启动将刷新所有连接,这就是服务器可能重新启动的原因。

因此,请修复您的应用程序并关闭连接。同时,您可以使用此脚本来杀死打开的连接,这些连接在进程列表中保持无效。该脚本将杀死进程列表中停滞的所有内容,持续500秒。您可以根据需要更改时间。

SECONDS_TOO_LONG=500 
QUERIES_RUNNING_TOO_LONG=`/mysql/bin/mysql -u user -p'password' -ANe"SELECT COUNT(1) FROM information_schema.processlist WHERE user<>'system user' AND time >= ${SECONDS_TOO_LONG}"` 
if [ ${QUERIES_RUNNING_TOO_LONG} -gt 0 ] 
then 
    KILLPROC_SQLSTMT="SELECT GROUP_CONCAT(CONCAT('KILL QUERY ',id,';') SEPARATOR ' ') KillQuery FROM information_schema.processlist WHERE user<>'system user' AND time >= ${SECONDS_TOO_LONG}" 
    /mysql/bin/mysql -u user -p'pass' -ANe"${KILLPROC_SQLSTMT}" | /mysql/bin/mysql -u user -p'pass' 
fi;