X3220四核Linux Apache服务器的负载很高

我非常需要帮助。 我的网站现在几乎不可能使用,因为我的服务器负载很大。 我已经晚了一个月的抵押贷款,这真的没有帮助我的情况。 我一直在努力解决这个间歇性负载问题几个月(从来没有这么糟糕)。

由于我在DDOS攻击下,我怀疑是某种攻击! 我一直在想弄清楚是什么导致了负载,但我恐怕只是没有经验或知识去理解我一直在看的所有数据。 我甚至不知道从哪里开始或如何testing大量的攻击。

这里有一些你可能会觉得有用的数据

服务器:Xeon X3220四核2.4 GHz – Linux,FreeBSD 500 GB HD和8 Gig Ram。 运行Centos版本5.7服务器版本:Apache / 2.2.21(Unix)mod_ssl / 2.2.21 OpenSSL / 0.9.8e-fips-rhel5 mod_auth_passthrough / 2.1 mod_bwlimited / 1.4 FrontPage / 5.0.2.2635 mod_qos / 9.74

警告:所有的网站都是中等成年人的网站 – 主要是像精灵和亚马逊的幻想艺术。

1)网站可能会运行良好的几个星期或只有几天不到10负载,然后开始跳到40-80负载 – 不知道为什么。 相同的网站,相同的MODS,相同的stream量 – 只是WHAM!

2)几乎每天都会收到一封电子邮件,内容是:“来自IP的失败login尝试次数(每次都不一样)”。 我的networking主机(几乎从来没有帮助过我)告诉我这是一个udp洪水或什么的。

3)我已经改变了默认的MySQL的端口。 如果我把它恢复到默认值 – 我得到超过100的负载必须是一个恒定的MySQL端口洪水。

4)我重新configurationMYSQL。 链接: http : //www.deadlyamazons.com/logs/mycnf.txt

5)我有3个Joomla Jomsocialnetworking。 我花了几个星期把所有的mod /插件closures,等待一天,然后在第二天或之后将它们重新打开,如果没有任何改变(还没有)。 例如,星期四我会closuresvideo,星期五我会closures聊天..等,没有什么改变负载略微。

6)Joomla信息:所有SEFclosures – sh404sef完全禁用和删除。 组件:Joomla 1.5.22,Jomsocial 2.0.5,Kunena 2011年1月31日,HWDMediashare 11/22/2010和JBolo聊天2.7.3,彗星聊天或Envolve聊天。 页面压缩处于打开状态,caching在15分钟内。

请点击此论坛查看我所有报告的链接: http : //forum.joomla.org/viewtopic.php?f=433&t=706035&p=2777500#p2777500

4/9/12 – 增加了这个部分:

嗨,大家好,我回来了一些关于我可怜的服务器的更多信息。 目前服务器正在徘徊,平均在30到60之间。

我将增加一个激励来解决我的问题:100美元通过贝宝的答案解决了“负载”的问题,而没有购买一个或多个额外的服务器的build议。 同样,这些网站在更低功率的服务器上运行更高的stream量也能正常工作。

我只是重新编译apache 2.22添加eaccelerator和zend优化器 – 没有改变。 另一个我包括的模块是QOS,它将连接的数量保持在较低的水平。 我已经有QOS工作一段时间了。

build议和要求:

是的,我确实closures了MySQL的端口,我应该提到这一点。

stream量统计:

3月带宽:579.19G

KBytes 2012年3月:3,194,134,948 | 2011年12月:3,504,864,832

访问2012年3月:920,619 | 2011年12月:727,843

Pages Mar 2012:10,231,430 | 2011年12月:10,830,700

文件2012年3月:89,218,232 | 2011年12月:102,862,958

点击三月2012:106,515,577 | 2011年12月:120,884,007

Top-C在高负载下的video:这里是当服务器运行在30到40个负载之间时,我采用的2'顶部-c的AVI。

下载1.5分钟/ 30M片段: http : //www.mediafire.com/? yk3b5xota7l7s30

下载30秒/ 10M剪辑: http : //www.mediafire.com/?4c2t37i8gmd189w

高负载时MySQL Processlist的video当服务器在60-30负载之间运行时,以下是CPanel内部的“显示进程列表”的AVI。

下载2分钟/ 40M剪辑: http : //www.mediafire.com/? ymmfe8599bx11ho

下载30秒/ 10M剪辑: http : //www.mediafire.com/?e675p3p1f0l65jt

DStat统计:4连续采取Sceeencaps …链接:

http://www.deadlyamazons.com/logs/dstat01.jpg

http://www.deadlyamazons.com/logs/dstat02.jpg

http://www.deadlyamazons.com/logs/dstat03.jpg

http://www.deadlyamazons.com/logs/dstat04.jpg

Joomla Board上的统计数据在之前看不到:

netstat -alntp | grep:80 | wc -l(1586)

netstat -n | grep:80 | grep SYN | wc -l(30)

netstat -anp | grep .tcp \ | udp。 | awk'{print $ 5}'| 切-d:-f1 | sorting| uniq -c | sorting-n(无)

netstat -alntp | awk'{print $ 5}'| 切-d:-f1 | sorting| uniq -c | sorting-n – 报告: http : //www.deadlyamazons.com/logs/netstat_alntp_awk_print_5_2.txt

netstat -alntp | grep:80 – http://www.deadlyamazons.com/logs/netstat_alntp_grep_80_2.txt

顶部(命令行) http://www.deadlyamazons.com/logs/top01_cli.jpg顶部2(命令行) http://www.deadlyamazons.com/logs/top02_cli.jpg顶部(WHM) http:// www .deadlyamazons.com / logs / top01_whm.jpg Top 2(WHM) http://www.deadlyamazons.com/logs/top02_whm.jpg IOStat(命令行) http://www.deadlyamazons.com/logs/iostat.jpg每日进程日志(WHM) http://www.deadlyamazons.com/logs/daily_process_log.jpg进程跟踪MYSQL(txt)(巨大!) http://www.deadlyamazons.com/logs/trace_mysql.txt进程跟踪MYSQL rtf) http://www.deadlyamazons.com/logs/trace_mysql.rtf进程跟踪sxyamzn(txt) http://www.deadlyamazons.com/logs/sexyamazonscom_indexphp.txt进程跟踪sxyamzn(rtf) http:// www。 deadlyamazons.com/logs/sexyamazonscom_indexphp.rtf过程跟踪sleepp(txt) http://www.deadlyamazons.com/logs/sleeppeepscom_indexphp.txt过程跟踪sleepp(rtf) http://www.deadlyamazons.com/logs/sleeppeepscom_indexphp。 RTF

任何帮助,将不胜感激。

这是我看到的第一个错误。 尽量避免在同一台服务器上安装MySQL和Apache。 这是为什么。

根据您提供的configuration,我将其用于MySQL使用计算器

Session variables max_allowed_packet 4.0 MB sort_buffer_size 3.0 MB net_buffer_length 16.0 KB thread_stack 192.0 KB read_rnd_buffer_size 8.0 MB read_buffer_size 2.0 MB join_buffer_size 96.0 MB Total (per session)113.2 MB Global variables innodb_log_buffer_size 1.0 MB query_cache_size 96.0 MB innodb_buffer_pool_size 1.0 MB innodb_additional_mem_pool_size 1.0 MB key_buffer_size 384.0 MB Total 483.0 MB Total memory needed (for 300 connections): 33.6GB 

你有8GB。 所以..你会很快变得相当swappy。 你的服务器将用完所有的可用RAM与MySQL,因为你已经告诉它。 其他一切都将进入交换空间。 在磁盘上。 慢。 IOWait将通过屋顶,导致需要磁盘访问的进程等待它。 这意味着进程将被阻止。 这意味着平均负载也将大幅上升。

Joomla,它的标准,未经修改的forms是有点讨厌的。 你在这台服务器上有多less个网站? 这可能是它不能应付。 数据库和Web应用程序之间是否有像Memcached这样的图层? (这可能需要更多的RAM)。 Coppermine也是一个CPU的妓女。 一个简单的图库加载需要很多周期(或者,上次我使用它)。

build议:

  1. 当负载尖峰时,尝试并获取IOWait的一个量度。 Dstat对此很有帮助。
  2. 调整你的MySQL限制到你真正需要的,而不是这些巨大的缓冲区大小和caching。
  3. 考虑获得另一台服务器,或调整您的MySQL利用率限制。 虽然36GB +数据库服务器的可能性并不超出可能,但可能不是必需的,因为没有预期的负载。
  4. 或者,也可以考虑将Web和数据库服务器分开,以使每个服务器在执行自己的工作时可以更有效率,而不是两者兼而有之。
  5. 如果你有很多的静态内容,你可能想把Varnish当作一个反向caching代理。
  6. 安装APC或eAccelerator ,这两个PHP操作码caching可以大量减lessPHP使用的RAM的数量
  7. 看看你如何运行PHP。 你可能会发现PHP-fpm给你更好的内存性能。 如果你真的疯了/疯狂/自杀,你可以尝试用HipHop预编译PHP。

除了Tom的回答,php也可能有问题,它会产生令人难以置信的负载量。 有时在Joomla中,罪魁祸首是插件。 检查你是否安装了新的插件,并使用debugging模式来查看是否有问题。 他们造成负载的主要原因是因为他们查询您的数据库了很多。 所以请按照Tom O'Connor的build议,调整你的数据库。

也看看eAccelerator的PHP。 它caching你的页面,所以提供服务变得更快。 这意味着更多的内存使用情况。

严重的是,运行一个防火墙,如果不需要从外部访问,那么closures它(丢弃不拒绝)。

你可以尝试(而且我不是很有希望的结果)来运行OSSEC来阻止暴力破解。 我使用它 ,它工作得很好。 如果他们正在进行TCP同步或UDP洪水攻击,则唯一可以做的事情是请求ISP在到达您之前将stream量丢弃。