- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个用 PHP 和 MYSQL 老式构建的非常大的网站。
我的网站上有超过 1,000 个不同的查询,在不同的 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。我的.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
最佳答案
max-connections=100000
-- 哎呀!降到 1000
table_open_cache=99390
-- 下降到,比方说,2000
sort_buffer_size=512M
-- 降低到 RAM 的 1%,比如 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。
2022 后记:query_cache_size
和query_cache_type
变量已removed from mySQL 8.0.3+ .
关于mysql "memory usage"越来越大,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39596932/
我是一名优秀的程序员,十分优秀!