我有一个php文件,经常被调用外部应用程序的会话检查。 我不知道每秒钟有多less个电话,但我想可能是每秒钟拨打20-100个电话。
然而这个.php文件包含一个更新单行的SQL查询。 一旦我没有注意到这些行,整个数据库变慢了很多,最后我的论坛不再可用了。 我认为这是一个像服务器问题(例如许多IOPS?)。 不幸的是,我不知道如何find放缓的确切原因,也不知道如何确定我每秒获得的php文件的多less个电话。
这是非常简单的SQL查询(where子句只包含主键):
UPDATE bot_sessions SET ip_address = :ip_address, renewal_count = renewal_count + 1 WHERE username = :username AND session_token = :session_token
所以有两个问题:
通过查看Web服务器日志,您应该能够了解特定的PHP文件被调用的频率。 有几个其他的黑客 – 例如使用谷歌分析(这将不太准确),或更新文件/计数器(更多的资源密集型)。
正如@ ma.tome所说的那样,监控你的使用率给你一个开始的好地方,而且通常是有用的。 运行在135%的Mysql进程意味着使用多于1个CPU。 (如果你有4个CPU,总数是400%)。 运行vmstat会给你IO信息。
另一件事可能是开始在数据库中logging查询时间。 此外,请检查您的索引 – 根据您的应用程序,如果它尚未索引,您可以通过在bot_sessions中创build用户名索引来获得巨大的性能提升。 (不知道是否username或session_token是你指定的主键,可能想看看创build一个不是主键的索引) – 无论哪种方式,where子句不仅包含主键,还包含主键。
而且,你的系统可能只是内存不足而已。 看看你使用了多less交换 – 并且,如果需要的话,抛出更多的RAM来解决问题,或者减lessvm.swappiness。