mysqld 的以下用法似乎不正确,还有那个时间戳!有人知道为什么会这样疯狂吗?
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
25662 mysql 16 0 139m 30m 5256 S 88.9 1.7 312:17.23 mysqld
20200 apache 16 0 102m 14m 7548 S 5.0 0.8 0:01.42 httpd
当谈到 mysql、Apache 和 Lighttpd 配置时,我完全是新手,但 mysql 完全一无所知。下面是我的 my.conf。我在具有 2GB 内存并使用 InnoDB 的机器上运行,通过 PDO 连接。
[mysqld]
set-variable=local-infile=0
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
# Default to using old password format for compatibility with mysql 3.x
# clients (those using the mysqlclient10 compatibility package).
old_passwords=1
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
完全默认从头开始并避免错误,帮助!:)
首先,使用mysql或mysqladmin命令访问您的服务器,并使用它运行“show processlist”以检查当前正在运行的查询。
例如:
mysqladmin -u root -p processlist
。这将提示您输入 mysql root 用户的密码(与您的常规 root 帐户不同),并向您显示当前正在运行的查询。此外,可能需要对您的设置进行一些调整。我发现mysqltuner.pl脚本很方便,可以为我提供从哪里开始的指示。请记住,这只是一个开始。花几个小时来学习 mysql 性能调优的基础知识对于如此重负载的服务器来说是一项明智的投资。
您绝对应该查看您的 Processlist 并查看哪个查询如此缓慢。
但是从您的“顶部”屏幕截图中,我建议您在 my.cnf 文件中进行以下更改
下次遇到此问题时,您可能需要在这里和那里进行一些调整,但这些设置对于当前的问题非常有用。
我会运行一个“显示进程列表”,看看你运行了什么样的查询。它显然已经坐在那里咀嚼处理器一段时间了。
在 QA 期间打开通用查询日志,并对您捕获的查询做一些解释。我发现 Web 开发人员对我的数据库做的最常见的事情之一就是在没有索引的情况下进行排序。另一种是在频繁插入/更新/删除的表上放置一堆无意义的索引。添加永远不会使用的索引只会损害您的写入性能。这里有很多信息,但值得申请。
我还建议安装和监控sar/sysstat。