Mysql“内存使用量”不断增加

时间:2016-09-20 14:34:37

标签: mysql performance

我有一个非常大的网站,用PHP和& MYSQL。

我的网站上有不止1000个不同的查询,在不同的PHP页面上,并且很难将所有这些查询更新为MYSQLI。

我买了4GB RAM的VPS服务器,在过去的几个月里,我遇到了很慢的页面加载。

当我重新启动服务器时,一切都运行顺利,但经过几个小时/天后,网站加载速度变慢,加载时间为3秒以上。我注意到 mysqld 服务正在增加并增加内存使用量,从服务器重启时的80MB开始,它达到了大约400MB并且使用量更多。

我放入了index.php mysql_close()的末尾,但似乎连接数仍在增加。

问题 什么可以导致mysql内存使用无限增加? 将我的所有查询更新到MYSQLI可能会提高性能吗?

一些信息:

innodb_version
5.5.31
protocol_version
10
slave_type_conversions
version
5.5.31-log
version_comment
MySQL Community Server (GPL)
version_compile_machine
x86_64
version_compile_os
Linux

存储引擎:混合(某些表是INNODB,有些表是MyISAM。 的my.cnf:

[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
max-connections=100000
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
thread_cache_size=5
table_open_cache=99390
sort_buffer_size=512M
read_rnd_buffer_size=512M
query_cache_size=512M
query_cache_limit = 16M
query_cache_type = 1
slow_query_log=1 
slow_query_log_file=slow_query_log.log # 
long_query_time=5
log-queries-not-using-indexes=1


[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

当我使用show processlist

时,我有大约6-7个查询在运行

1 个答案:

答案 0 :(得分:0)

max-connections=100000 - 哎呀!降至1000

table_open_cache=99390 - 贬低,比方说,2000

sort_buffer_size=512M - 降至1%的RAM,比如40M

read_rnd_buffer_size=512M - 同上

query_cache_size=512M - 太大了;放慢脚步;降到40M

long_query_time=5 - 不足以捕获太多;降到2

log-queries-not-using-indexes=1 - 在没有提供太多信息的情况下使慢速日志混乱;改为0

您没有说明您使用的是哪种引擎。阅读this以获取有关MyISAM和InnoDB的建议。

1000页 - 这不是太多。

哪个网络服务器?如果是Apache,请不要将MaxClients设置为20以上。

相关问题