我的客户在共享服务器上拥有自己的网络托管帐户,并且他们的帐户已被暂停,原因是“导致关键服务器过载”。我查看了代码,它是功能编程的php,它使用了大量的数据库查询。我看了看,其中大部分都是“SELECT *”。该数据库具有包含10行或更多行以及1000多条记录的表。
我想知道原因是否所有sql查询都没有被释放,但我不确定“脚本执行”何时完成。是在函数完成执行后,还是整个页面已经呈现?它可能是表格(结构或记录)的大小吗?有没有人有其他想法?
答案 0 :(得分:2)
这实际上取决于客户端所使用的软件包类型,自定义编码的脚本类型或wordpress等标准脚本。
导致关键服务器超载 - 可能是众多事情:
高内存使用率:脚本不使用单例模型或将大量数据分配给数组,变量或包含大量文件。基本上糟糕的设计&代码味道。
高CPU:过长的脚本,长迭代循环,中间有复杂的计算或每个页面视图的无限循环(套接字)等。
高网络流量:屏幕抓取器就像一个爬虫,它要求来自其他网站的大量流量,或者基本上是抓取外部内容ALOT的脚本,或类似于torrent跟踪器的东西。
高磁盘使用率:不断轰击服务器IO堆栈(不断写入和读取磁盘)
包含大量数据库查询的脚本可能属于:高磁盘使用率(读取)+高内存使用量(迭代结果)+高CPU(执行结果)
您应该使用工具在本地对脚本进行性能分析:xDebug或PQP,并了解最新情况。
如果您的客户对该网站非常认真,那么他们应该投资VPS。
答案 1 :(得分:0)
确保正确关闭SQL连接。如果您一次执行大量查询,则将连接打开更长时间可能更有效。或者,如果您在每次查询后没有关闭它们,可以尝试这样做。我必须说10个表不是很多,如果这会使共享服务器过载会让我感到惊讶。