![网站停滞,显然是由于 mySQL 停滞](https://linux22.com/image/517748/%E7%BD%91%E7%AB%99%E5%81%9C%E6%BB%9E%EF%BC%8C%E6%98%BE%E7%84%B6%E6%98%AF%E7%94%B1%E4%BA%8E%20mySQL%20%E5%81%9C%E6%BB%9E.png)
我管理的一个网站位于一家主要供应商的共享托管服务器上。该网站运行一个由 MySQL 支持的 CMS。
在过去的几个月里,我和我的管理同事注意到了几次看似随机的情况,即在显示一些通用的 CMS 内容后,页面加载几乎立即停滞。根本没有特定于站点的内容。我们看到了 15 到 30 分钟的停滞。(令人费解的是,没有一个网站访问者抱怨过,尽管他们的人数比我们多得多。)
有一次,我碰巧在网站出现故障时检查了该网站,我有时间登录托管控制面板。我怀疑是数据库问题,于是在网站的数据库上运行了 phpMyAdmin。我通过了前期准备工作,但第一个数据查询停滞了。最终,大约 10 分钟后,问题自行解决——我当然没有修复任何东西——查询返回了正确的数据。几秒钟后我检查了该网站,它运行正常。
托管服务技术支持一直没有回应或敷衍了事。有一次,我报告了一次纯粹的停滞,他们要求我提供错误消息。
在最近的一次失速中,我的同事报告出现了以下消息:
无法与 MySQL 2002 建立连接:无法通过套接字“/var/lib/mysql/mysql.sock”连接到本地 MySQL 服务器 (2)
根据这些观察,导致停顿的可能原因是什么?MySQL 故障,也许是过载?还有其他可能性吗?
服务器上可能有哪些诊断日志?我可以/应该做什么来检测网站?
是否有上述错误信息,是否似乎存在相同的潜在问题?(也许技术人员最近已经接手此案并添加/启用了该消息?)
这看起来像是我能处理的事情还是需要说服托管服务来修复?
这种中断是否是廉价托管的或多或少的标准“功能”?(不幸的是,该项目无法提供更好的服务。)
我是否遗漏了任何非常明显的事情?
答案1
无法与 MySQL 2002 建立连接:无法通过套接字“/var/lib/mysql/mysql.sock”连接到本地 MySQL 服务器 (2)
上述消息意味着您的 MySQL 服务器确实不可用。由于它似乎与您的 CMS 在同一台主机上运行,因此不存在网络问题。
停顿是否总是发生在同一时间?也许供应商正在进行备份,并且出于某种原因在备份期间停止了 MySQL?或者也许 MySQL 存在其他问题,导致其崩溃并需要重新启动?
如果我是你,我会编写一个简单的监控脚本,它会SHOW GLOBAL STATUS
不时运行,并密切关注服务器是否持续接近其极限(你可以使用 获取最大连接数的限制和类似的东西SHOW VARIABLES
)。如果出现这种情况,我会向供应商投诉并恳请他们修复这个问题。
另一方面,如果服务器通常还没有达到极限,但突然出现连接数激增,那么您只是在观察共享主机的影响。出现问题的不一定是您的网站,也可能是其他人的网站。
答案2
如果您可以进入 phpmyadmin,请尝试:
显示进程列表
如果是您正在执行的查询导致了暂停,它可能会给您一些启发。
如果您可以访问慢查询日志,这也可能会为您提供一些查看方向。如果是一家廉价的共享托管公司,您可能无法访问该日志。
根据您的问题,您连接到的是本地主机,因此,这可以解决大部分与网络相关的问题。也可能不是您正在执行的查询导致了问题,在这种情况下,processlist 可能不会显示您需要的内容。
您确实需要让您的主机坐下来,记录事情,并找出原因,因为大多数可能的问题对于您的用户名及其有限的权限来说都是看不见的。但是,如果没有他们的帮助,您就会陷入困境。
答案3
感谢所有回复的人。我认为问题基本已经解答了。
我认为很明显,mySQL 服务器不可用的时间太长了,大多数人认为这是不可接受的。我可能想对服务器进行检测,试图描述这些事件的模式,作为提交给托管服务技术支持的证据。
如果我在停机期间能够访问网站的控制面板,人们会建议我使用一些有用的 mySQL 诊断程序。我会尝试这些程序,但无论我找到什么都无济于事;本质上,“不可用”就是“损坏”,而描述和修复问题完全是托管服务的责任。显然,这不是该供应商的首要任务。
显然,低成本共享主机的用户必须接受一些较低的网站性能标准,我对此也习以为常。根据我对这家特定供应商的广泛经验,我觉得在其他地方会得到更好的结果,我计划尽快转移到其他主机服务——可能只需几个月。在此之前,添加仪表可能是值得的。
谢谢!