这是我在serverFault上的第一篇文章,也是我第一次进入web服务器configuration。
硬件和软件。
CPU:Genuine Intel,Intel(R)Core TM 2 Duo CPU E7500 @ 2.93GHz
操作系统:Linux 2.6.18-128.el5
内存:2Gb
背景。
我正在运行一个小型数据库(MySQL),大约1000条logging,每条logging包含44个字段。 在每天“00:01”开始时,表格被清除并填入新的数据。
这10台远程PC都运行着Winodws XP和Firefox浏览器。 所有远程PC都使用最低4Gb宽带连接连接到互联网。
每台远程PC运行一个URL,显示每20秒刷新一次的数据dynamic页面。 这是一个24小时连续的过程。
我的问题是我在全天的奇怪场合PC浏览器错误与“服务器花费太长的时间来应对错误”。 我试图find我们的是如果我在服务器上的httpd.conf文件中有正确的设置。 任何人可以提供的帮助或build议将是非常有帮助的。
最好的祝福
德雷克
服务器configuration文件:
httpd.conf文件
ServerRoot "/etc/httpd" PidFile run/httpd.pid Timeout 120 KeepAlive On MaxKeepAliveRequests 200 KeepAliveTimeout 5 <IfModule prefork.c> StartServers 8 MinSpareServers 5 MaxSpareServers 20 ServerLimit 256 MaxClients 254 MaxRequestsPerChild 4000 </IfModule> <IfModule worker.c> StartServers 2 MaxClients 150 MinSpareThreads 25 MaxSpareThreads 150 ThreadsPerChild 25 MaxRequestsPerChild 0 </IfModule>
几件事你可以检查:
你的configuration远不是最优的,但是在服务你所描述的负载时应该是完全没有问题的。
你还没有给我们很多关于代码如何工作的细节。 在你的代码描述中没有任何东西可以build议它可能会导致超时 – 但是可以想象在代码中可能会出现死锁。 在这种情况下,您的日志应该充满错误。 的确,当你的网站没有像你期望的那样行事的时候,这是第一个看的地方 。 您的访问日志(apache通常configuration为使用组合日志格式)将显示每个请求所花费的时间。 有很高的价值吗? 超过120秒的任何内容都应该产生错误日志条目。
你不能从Apache访问MySQL数据库 – 你需要一些应用程序逻辑 – 但你没有提供任何细节。 如果请求确实花费了这么长时间,这应该是logging错误。
然而,我会把赌注放在客户端或networking上的问题 – 请求永远不会到达Web服务器。 为了certificate这一点,我会validation客户端的最后一次请求的持续时间 – 它将不会超过预期。 至于如何分离根本原因….这更复杂。 在所有客户端和服务器上维护详细的数据包日志是相当困难的。 最有可能的候选人是networking本身或“安全”软件。
查看页面刷新的机制可能会简单得多,并且构build一些内置的基本诊断function(例如,用JavaScript编写,当东西失败并检查站点连接性时显示一个合理的错误消息)
这听起来像你的服务器由于某种原因阻塞。 您可能需要增加apache设置或切换到fastcgi,但我怀疑在PHP或MYSQL中有一个放缓。 打开mysql的慢速查询日志,看看是否可能会减慢MySQL的速度。 请参阅http://dev.mysql.com/doc/refman/5.5/en/slow-query-log.html