![Directadmin 警告系统平均负载为 X](https://linux22.com/image/754356/Directadmin%20%E8%AD%A6%E5%91%8A%E7%B3%BB%E7%BB%9F%E5%B9%B3%E5%9D%87%E8%B4%9F%E8%BD%BD%E4%B8%BA%20X.png)
我不是服务器专家,有人能帮助我了解我的服务器哪个部分负载过大以及我该怎么做才能解决这个问题吗?
我最好的猜测是与节点服务器 + mysql 的连接太多,因为大多数时候我都在获取mysql connection refeused errors
我的节点 js 应用程序的日志
[root@dominoserver ~]# vi /var/log/mysql/mysql_error.log
InnoDB: Progress in percent: 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99
更新:我检查了服务器的 CPU 使用率图表,发现有很多 100% 的峰值,所以现在我为我的服务器添加了另一个 CPU 核心...必须等待看看会发生什么!
答案1
您有一些性能日志,向服务器添加更多资源永远不是一个坏主意。
我根据经验提出一些建议。
检查所有日志、dmesg、服务日志等,查找相关消息。在某些情况下,服务器可能有足够的资源,但遇到了内核或 mysql 限制……例如打开文件的数量,或到 mysql 服务器的并发连接(线程)。
您的服务器上正在运行一些监控,这很好,但有时一张图片胜过千言万语,通过以图形格式实际查看数据,您可以更快地识别趋势。
监控工具的数量多得令人眼花缭乱。您的监控工具中甚至可能存在某种输出图表选项。
如果发现 mysql 超载,那么您可以采取多种措施来优化服务器的这一部分。
调整 mysql 参数。
使用更快的索引优化数据库结构
以不同的方式组织数据,或重新设计应用程序以进行更好的查询。
关注你的应用程序如何与数据库通信(通过内部 Unix 域套接字,还是通过环回 TCP 套接字,是否重用连接池)
“对数据库最好的查询是您永远不需要进行的查询”。您认为“youtube 视频观看次数计数器”是通过数据库查询计算出来的吗?再想想吧!
有很多工具可以做,有些需要付费工具/服务,有些则可以免费安装。
https://github.com/major/MySQLTuner-perl
https://stackify.com/mysql-tutorial-improve-performance/
如果事实证明这只是您访问数据库内数据的“方式”,那么请考虑一下您的数据?您是否在进行复杂的查询,或者 mysql 是否必须进行键/值对查找...尝试使用不同的数据库服务器,并查看 nosql 数据库,您可能有一个数据库模型,它正好适合这些更快的数据访问方式 :-)。
如果您无法重新构建数据库层,那么如果您的应用程序一遍又一遍地进行相同的读取查询,那么有许多缓存层可以真正加快您的应用程序的速度。
https://dev.mysql.com/doc/refman/5.7/en/innodb-memcached-intro.html
最后要考虑的是,谁在访问 mysql?后端是否暴露在互联网上?所有请求是否都来自您认为它们应该在的地方?您是否有一个远程运行的备份作业,这会导致已经加载的服务器在备份周期内过载?
优化是值得学习的好方法,讽刺的是,许多应用程序可以用更少的服务器硬件支持其当前的外部负载,而无需扩展。扩展要容易得多(更多的 NET/RAM/CPU/SSD/DISK)。
祝你好运。
https://www.tecmint.com/command-line-tools-to-monitor-linux-performance/ https://www.binarytides.com/linux-commands-monitor-network/