我有一个非常大的网站,用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
答案 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以上。