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

Joh*_*lar 3 linux joomla apache-2.2

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

我怀疑是某种攻击,因为我经常受到 DDOS 攻击!我一直试图找出导致负载的原因,但恐怕我没有经验或知识来理解我一直在查看的所有数据。我什至不知道从哪里开始或如何测试那里的大量攻击。

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

服务器:至强 X3220 四核 2.4 GHz - Linux,FreeBSD 500 GB HD 和 8 Gig 内存。运行 Centos release 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 负载 - 不知道为什么。相同的网站,相同的模组,相同的流量 - 只是WHAM!

2)我几乎每天都会收到一封电子邮件,上面写着:“大量来自 IP 的失败登录尝试(每次都不同)”。我的网络主机(几乎从不帮助我)告诉我这是 udp 洪水之类的。

3) 我已经更改了 MySQL 的默认端口。如果我将其恢复为默认值 - 我从必须是恒定的 mysql 端口洪水中获得超过 100 的负载。

4) 我重新配置了 MYSQL。链接:http : //www.deadlyamazons.com/logs/mycnf.txt

5) 我有 3 个 Joomla Jomsocial 网络。我花了几个星期关闭所有的模组/插件,等了一天,然后在第二天或以后再打开它们,如果没有任何变化(没有)。例如,在星期四我将关闭视频,在星期五我将关闭聊天……等等,并且没有明显改变负载。

6) Joomla 信息:所有 SEF 关闭 - sh404sef 完全禁用和删除。组件:Joomla 1.5.22、Jomsocial 2.0.5、Kunena 1/31/2011、HWDMediashare 11/22/2010 和 JBolo Chat 2.7.3、Comet Chat 或 Envolve Chat。页面压缩开启,缓存开启 15 分钟。

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

2012 年 4 月 9 日 - 添加了这一部分:

大家好,我回来了,提供了有关我糟糕的服务器的更多信息。服务器目前一瘸一拐,负载在 20 到 60 之间,平均约为 30。

我将添加一个解决我的问题的激励措施:通过 Paypal 支付 100 美元以获得解决“负载”问题的答案,而无需购买 1 台或多台额外服务器的建议。同样,这些站点在较低功率的服务器上甚至在更高的流量下也能正常工作。

我刚刚重新编译了 apache 2.22,添加了 eaccelerator 和 zend-optimizer - 没有变化。我包含的另一个 mod 是 QOS,它将连接数保持在较低的水平。我已经让 QOS 工作了一段时间。

建议和要求:

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

流量统计:

三月带宽:579.19G

千字节 2012 年 3 月:3,194,134,948 | 2011 年 12 月:3,504,864,832

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

2012 年 3 月页数:10,231,430 | 2011 年 12 月:10,830,700

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

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

高负载期间的 Top -C 视频:以下是我在服务器在 30 到 40 负载之间运行时拍摄的 2 个“Top -c”的 AVI。

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

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

高负载期间 MySQL 进程列表的视频 以下是服务器在 60-30 负载之间运行时 CPanel 中 2 个“显示进程列表”的 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 | 排序 | uniq -c | sort -n(无)

netstat -alntp | awk '{print $5}' | 剪切 -d: -f1 | 排序 | uniq -c | sort -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 前 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 进程跟踪 sleepps (txt) http://www.deadlyamazons。 com/logs/sleeppeepscom_indexphp.txt 进程跟踪 sleepps (rtf) http://www.deadlyamazons.com/logs/sleeppeepscom_indexphp.rtf

任何帮助,将不胜感激。

Tom*_*nor 5

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

根据您提供的配置,我将其注入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
Run Code Online (Sandbox Code Playgroud)

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

Joomla,在它的标准,未经调整的形式是有点野兽。你在这台服务器上有多少个站点?可能是它无法应对。在数据库和 Web 应用程序之间是否有像 Memcached 这样的层?(这可能需要更多的内存)。Coppermine 也有点像 CPU 婊子。一个简单的图库加载需要相当多的周期(或者,我上次使用它时)。

建议:

  1. 尝试在负载激增时测量 IOWait。Dstat 对此很有用。
  2. 将您的 MySQL 限制调整为您实际需要的,而不是这些巨大的缓冲区大小和缓存。
  3. 考虑获取另一台服务器,或调低 MySQL 利用率限制。虽然拥有 36GB 以上的数据库服务器并没有超出可能的范围,但它可能不是必需的,因为没有任何预期负载的迹象。
  4. 或者,考虑将 Web 和数据库服务器分开,这样每个服务器在完成自己的工作时都可以更高效,而不是两者兼而有之。
  5. 如果您有大量静态内容,您可能希望将Varnish视为反向缓存代理。 
  6. 安装APCeAccelerator,这两种 PHP Opcode 缓存都可以大大减少 PHP 使用的 RAM 量
  7. 看看你是如何运行 PHP 的。您可能会发现PHP-fpm为您提供了更好的内存性能。如果你真的很疯狂/疯狂/想自杀,你可以尝试用HipHop预编译 PHP 。