关于magento的mysql连接太多了?

时间:2013-02-15 11:05:00

标签: mysql apache magento cpanel whm

我在hostgator.com

上有以下服务器
Intel Xeon E3-1265L 2.5GHz
100 mbps Uplink
4 GB DDR3 Memory
500 GB RAID-1 Drives
10 TB Bandwidth
Up to 5 Dedicated IPs

在过去的两个月里,我们收到过多次连接错误。 我们每天的访问量不到1000次,所以我认为服务器的访问量不会太多。

上周,它再次发生,我们对支持团队所做的是清除magento日志表。 我还将magento日志保留时间从180天减少到了5天。

今天它再次发生,whm, cpanel or the domain本身完全无法进入。

我想知道这是否是由于搜索引擎抓取我们的网站?上周,我在谷歌网站管理员工具中减少了抓取速度。

今天我们遇到了mysql连接问题,我们在垃圾邮件服务和chkservd上也有多个挂起。

问题是:

If I increase max connections to 400, is that too much for my server?

Do you think I need more server processor or ram?
Or do you think it might be a denial of service attack?

请帮助。

提前致谢。

更新

top - 05:41:25 up 12 days, 17:57, 1 user, load average: 33.40, 38.14, 54.62 
Tasks: 267 total, 12 running, 247 sleeping, 4 stopped, 4 zombie 
Cpu(s): 11.1%us, 0.9%sy, 0.1%ni, 83.7%id, 3.9%wa, 0.1%hi, 0.1%si, 0.0%st 
Mem: 2917444k total, 2281856k used, 635588k free, 56324k buffers 
Swap: 4194296k total, 290924k used, 3903372k free, 343860k cached 

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 
26327 theprint 16 0 57088 42m 6640 R 94.0 1.5 0:58.97 php 
26316 theprint 16 0 58592 44m 6640 R 86.2 1.6 1:04.44 php 
26308 theprint 16 0 58592 44m 6644 R 74.4 1.5 1:05.23 php 
26383 theprint 16 0 59500 45m 6640 R 74.4 1.6 0:56.33 php 
26278 theprint 16 0 58596 44m 6640 R 72.5 1.5 1:05.95 php 
1253 theprint 16 0 54224 39m 6640 R 66.6 1.4 0:07.85 php 
26280 theprint 16 0 58336 44m 6640 R 64.6 1.5 1:00.90 php 
26653 theprint 16 0 59784 45m 6640 R 52.9 1.6 0:44.99 php 
26421 theprint 15 0 56280 41m 6640 S 29.4 1.5 0:36.84 php 

3 个答案:

答案 0 :(得分:2)

  

如果我将最大连接数增加到400,对我的服务器来说太多了吗?

我们不知道:您没有提供服务器执行方式的详细信息,也没有详细说明服务器的容量。即使你有,你也不可能to get a sensible answer

  

我想知道这是否是由于搜索引擎抓取我们的网站?

也许,你为什么不调查它。即使用于配置服务器的玩具不起作用,也应该从您的日志中获取数据。

阅读一些关于MySQL性能调优的好书(this是一个好的开始)并调整堆栈的其余部分。

答案 1 :(得分:0)

您需要研究服务器负载处理能力以及它一次可以处理多少并发连接。

如果MySQL连接和请求同时出现太多,则会出现这种情况。因为服务器无法一次处理此类批量请求。因此,在这种情况下,您可以将服务器正在处理的并发进程数增加到它的最大值和服务器容量。

但在继续之前,请确保并发请求真的是真的。您需要监视正在运行的连续MySQL进程。您可以通过' mysql -pr'进行检查。一旦您将获得消耗最多资源的用户,请继续检查它为何占用资源。如果您发现没有合法进程,则可以暂停此类用户以避免生成的问题。

答案 2 :(得分:0)

如果您的网站包含大多数静态网页

更好地使用缓存

许多选项可以降低CPU使用率

  • Mysql或mysqli cache
  • 在PHP中运行?您可以创建一个简单的缓存脚本,可以对其进行修改以缓存部分页面或整页。 像Zend一样使用优于其他的Opcache ..
  • 如果你有更多内存?并且该网站在完整的SQL中运行?使用Memcached。

我注意到你正在使用cpanel?你需要调整你的服务Untick不需要的监控服务,并添加cron到清除旧日志..

如果您从Bot获得Hits或从垃圾邮件域中获取?阻止htaccess中的引用者.. 或者使用nginxcp for cpanel

根据我的经验,这些是指导..希望这可以降低您的CPU使用率。