-3

我有一个处理大量流量的专用服务器,我一直认为服务器上的流量太多,但我的托管公司一再告诉我服务器很好。我认为“每个人”都无法访问它的唯一原因而不仅仅是我,我使用谷歌实时分析并在我无法连接的同时看到数字下降到个位数。通常数字是数千。

每次只持续大约 1-2 分钟,但每天会发生 4-5 次,而且我的流量很大,所以这让我发疯。

当我在无法连接期间 ping 和 tracert 时,它仍然给我响应。到底是怎么回事????

4

1 回答 1

0

如果在无法处理 http 或 https 请求的时间段内可以 ping 通,则表示 DNS 和路由器正在工作,这很可能是服务器问题。

快速检查:内存不足?使用 SSH(安全外壳)并使用sudo用户帐户登录。这可能是root但出于安全目的可能已禁用 root,因此请使用具有完全权限的帐户。一旦登录到服务器。键入以下内容(注意:您应该在没有遇到中断时执行此操作,以查看与发生中断时的比较情况):

free -m  

结果显示使用了多少内存。如果服务器内存不足,该top命令将显示正在运行的软件以及 CPU 和内存使用量。使用QControl + C退出命令。解决方案,尽可能优雅地重新启动服务,并记住您可能需要添加更多 RAM 或解决软件问题。

如果您有 linux 专用服务器,请检查Apache log files. 您可以这样做,因为您有专用服务器或 VPS。共享主机帐户通常不具备此功能。要查看错误日志,请使用 SSH(安全 shell)作为 sudo 并键入:

sudo tail -100 /etc/httpd/logs/error_log

如果使用 Ubuntu 或 Debian:

sudo tail -100 /var/log/apache2/error.log

代表日志中的tail -100最后 100 条记录。插入您自己的值。如果您想搜索特定术语,可以使用:

sudo grep -i invalid /etc/httpd/logs/error_log

如果使用 Ubuntu 或 Debian:

sudo grep -i invalid /var/log/apache2/error.log

这里,grep用于搜索表达式,-i使搜索不区分大小写,invalid是搜索词。apache 日志的更多细节。

查看日志可能会发现尝试的服务器攻击,例如拒绝服务 (DoS)。您可以研究入侵检测系统 (IDS) 或入侵防御系统 (IPS)。

您的托管公司可能不会详细查看您的服务器。要求他们也查看日志以获得第二意见。

您可能会遇到系统资源不足的问题,例如 RAM,无法在使用高峰时间处理请求。您可以查看在中断时发生了多少并发 MySQL 连接。如果您的流量数以千计,则您的 MySQL 连接可能设置得太低。要查看您的最大 MySQL 连接数,您可以在MySQL 命令行工具或类似phpMyAdmin的工具中使用以下命令:

show variables like "max_connections";

这将返回一个最大连接值:可能是 100,假设平均有 20 个并发连接。您可以通过以下方式增加它:

set global max_connections = 200;

此命令将立即生效,但会在 MySQL 重新启动后恢复为默认值。更改值并查看服务器如何处理您的流量。如果您注意到较少的中断,您可以mysqld在通常位于/etc/my.cnf.

根据您提供的信息,很难确切地说出可能是什么问题。您的 Web 应用程序或站点可能无法正确关闭打开的连接或查询速度很慢。您可以查看启用MySQL Query Cache。这不会增加太多开销,但可以提高性能。这里是关于MySQL 内存使用的文档。启用您的MySQL 日志。MySQL 有几种不同的日志类型,因此请启用与您认为导致问题的原因相关的一种。

希望这对任何问题有所帮助并发表评论。

于 2013-12-08T19:24:04.387 回答