有些朋友在使用BlueHost进行程序升级时,会出现如下提示:
Fatal error: Allowed memory size of 33554432 bytes exhausted (tried to allocate 2361357 bytes) in /home/xxx/public_html/xxx/xxx/xxx.php on line 1324
显示内存限额太小,搞的没办法,只能上传身份证附件去开通SSH。
其实,这个是可以修改的,解决这个的方法是:
1、在cpanel面板选择php Config,选择PHP5(Single php.ini) 单击保存
2、进入File Manager,进入public_html,找到php.ini,修改 memory_limit = 32M 为 memory_limit = 128M
设置完成后就可以了。
有时候会发现Bluehost虚拟主机有CPU超时限制问题,查了一下第三方的统计PV平均数值还不到1万,没有理由出现这样的问题,我的另一个帐户在同样的流量下没有任何问题,查看CPU Exceeded Log信息提示为MySQL查询超时。
可能造成Bluehost虚拟主机CPU超时限制的原因大致如下:
1.MySQL数据库文件碎片过多,解决方法整理数据库。
2.过多的搜索引擎蜘蛛大量提交数据库查询请求、被不良采集、恶意访问等,解决方法屏蔽!
3.网站源码、脚本效率低或配置不佳,我的这个帐户因良好运行已久,不存在这个问题,排除这种可能。
Bluehost虚拟主机出现CPU超时限制,不是一个严重问题,经过5、6分钟就会自动恢复正常,不用担心。
第一步要做的是找到原因:
如果能够直接找到引起CPU超时限制的那个问题最好不过了,因为Bluehost虚拟主机可以多个网站同时运行于一个帐户,有其复杂性。
如果不能确认是一个问题引发,可以圈定几个因素,逐一排查。
第二步要做的是解决问题:
上面以及提到了,解决方法相当简单,无非是屏蔽不良访问源、修改源码和整理MySQL数据库(单个500M以下的MySQL数据库产生文件碎片从而引起超时的可能性很小,基本可以不考虑。)。
很显然难点不是如何解决问题,找到引起CPU超时的原因才是关键。
打开bluehost虚拟主机的“/tmp/cpu_exceeded_logs”目录,这里保存着发生CPU exceeded时的日志记录文件。在这里我们可以找到我们需要的信息,
包括:在发生超时的那一分钟内究竟有哪些进程访问具体的访问时间访问了本帐户内的哪些网站,但这些信息似乎还不能帮助我们找到一些特殊的问题,例如:恶意访问者使用的IP。幸好bluehost为我们准备好了一切,我们可以去查访问日志(*我们通常用的第三方统计,通常无法看到蜘蛛的访问记录,但在Bluehost虚拟主机的日志上可以看到)