SHOPEX是现时很流行的一款网店程序,如果货品比较多(100件以上),在普通虚拟主机上将会经常出现流量过大或CPU占用过高而被空间商限制甚至停止服务等问题,通过查看流量统计,其实大部分流量是来自百度等搜索引擎,本来被搜索引擎“过目”是一件好事,现在却成了一件麻烦事,通过修改网站根目robots.txt(如果没有就新建一个),可以彻底禁止搜索引擎的访问,但这样,网店的生意也肯定做不成了,并不是好办法,甚至本末倒置。
进一步查看流量统计发现,其实大部分流量是来自网店中的图片,所以可以从图片处入手,通过修改rotobs.txt,只禁止搜索引擎索引图片,具体修改方法如下:
User-agent: Baiduspider
Disallow: /*.jpg$
Disallow: /*.jpeg$
Disallow: /*.gif$
Disallow: /*.png$
Disallow: /*.bmp$
以上只禁止了百度,如果要禁止所有搜索引擎,把第一行User-agent: Baiduspider改为User-agent: *即OK
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
刚才有客户shopex4.85网站出现CPU占用40%多
因为是独立程序池就可以知道是shopex4.85惹的祸
再观察http事件日志
发现该网站很多503错误
访问IP都是220.181.108.* 和 220.181.7.* 220.181.94.* 65.52.110.* 65.52.*.*@207.46.*.*@157.55.*.*@
在虚拟主机管理系统平台将220.181.108.*和220.181.7.* 220.181.94.* 65.52.110.*
65.52.*.*@207.46.*.*@157.55.*.*@这段IP设置禁止访问后CPU马上降下来,网站也恢复正常了。
再看事件日志
反复访问的是:
/?gallery-23-3,0_4,1_5,1-4--1--text.html
/?gallery-23-3%2C9_s2%2C24-8--1--text.html
/?gallery-23-3,0_5,1-4--1--index.html
/?gallery-23-3,0_5,3-4--1--grid.html
这样类似的页面
也就是说反复访问这样类似的页面就会出现CPU占用过高。再在浏览器中打开这些页面,是到shopex4.85的网站的搜索页面。可见shopex的搜索功能很消耗CPU。
我测试了几个shopex4.85的网站,只要反复的打开 http://域名/?gallery-23-3,0_4,1_5,1-4--1--text.html 用一台电脑就可以将shopex4.85的网站占用服务器的cpu达到40%以上。
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
解决新版shopex之mysql CPU 占用过高的问题2010-06-04 17:02
网上很多方法都交代用 show processlist 监控sql语句,然后优化索引,据本人搭建新版shopex(www.ahsport.com)的经验来看,同样遭遇很多网友反映的mysql 的cpu占用过大的问题,仔细查看my.cnf,发现max_allowed_packet 的默认配置竟然是1M,所以推荐首先修改该配置,实际情况现在mysql的cpu占用控制在20%以内了。
实际效果参考:
具体修改方法,以下是引自shopex生产队的官方文档
mysql根据配置文件会限制server接受的数据包大小。
有时候大的插入和更新会被max_allowed_packet 参数限制掉,导致失败。
1) 方法1
可以编辑my.cnf来修改(windows下my.ini),在[mysqld]段或者mysql的server配置段进行修改。
max_allowed_packet = 20M
如果找不到my.cnf可以通过
mysql --help | grep my.cnf
去寻找my.cnf文件。
2) 方法2
(很妥协,很纠结的办法)
进入mysql server
mysql -h 主机 -u 账号 -p密码set global max_allowed_packet = 2*1024*1024*10
然后关闭掉这此mysql server链接,再进入。
show variables like 'max_%'
查看下max_allowed_packet是否编辑成功。
评论回复