0

我的客户在共享服务器上拥有他们的虚拟主机帐户,并且他们的帐户已被暂停,因为“导致严重的服务器过载”。我查看了代码,它是功能编程的 php,它使用了大量的数据库查询。我已经看过了,其中大多数是“SELECT *”。该数据库有 10 行或更多行和 1000 多条记录的表。

我想知道原因是否可能是所有 sql 查询都没有被释放,但我不确定“脚本执行”何时完成。是在函数执行完毕之后,还是整个页面都渲染完毕了?可能是表(结构或记录)的大小吗?有没有人有任何其他想法?

4

2 回答 2

2

这实际上取决于您的客户使用的软件包类型,自定义编码的脚本类型或 wordpress 之类的标准脚本。

导致严重的服务器过载- 可能是很多事情:

高内存使用:该脚本未使用单例模型或将大量数据分配给数组、变量或包含大量文件。基本上糟糕的设计和代码气味。

高 CPU:非常长的脚本、在每个页面视图上具有复杂计算的长迭代循环或无限循环(套接字)等。

高网络流量:屏幕 Scappers,例如从其他站点请求大量流量的爬虫,或者基本上是抓取外部内容的脚本,或者类似于 torrent 跟踪器的东西。

磁盘使用率高:不断轰炸服务器 IO 堆栈(不断写入和读取磁盘)

包含大量数据库查询的脚本可能属于:高磁盘使用率(读取)+高内存使用率(迭代结果)+高 CPU(对结果进行处理))

您应该使用工具在本地对脚本进行性能分析:xDebugPQP,并找出真正发生的事情。

如果您的客户对那里的网站很认真,那么他们应该投资 VPS。

于 2012-04-23T17:29:51.453 回答
0

确保正确关闭 SQL 连接。如果您一次执行大量查询,则将连接保持打开更长时间可能会更有效。或者,如果您在每次查询后没有关闭它们,可以尝试这样做。我必须说 10 张桌子并不多,如果这会使共享服务器超载,我是否会感到惊讶。

于 2012-04-23T16:37:11.477 回答