我有一个高性能 PHP 脚本,它使用线程,每次迭代都会执行大量 HTTP Post 和数据库操作。我不会在这里深入研究脚本代码,因为它很简单,所以没有必要这样做。
我希望服务器只运行这个 PHP 脚本而不运行其他任何脚本,因此我希望所有可能的服务器资源都可以用于这个脚本。
问题:
我曾尝试在服务器上运行此脚本(它在与我的非常相似的服务器上进行了测试,并且表现非常好),使用默认配置,但性能不佳(每秒迭代次数很少)。脚本进程仅使用了 5% 的 CPU 和 13% 的内存。因此,应该存在一些常见的瓶颈,但我不知道是什么以及如何避免它们。
由于我以前从未为此类情况设置过服务器,有人能告诉我从哪里开始吗?对我来说,常见的服务器设置是怎样的?
编辑:
刚刚收到!(无法回答我自己的问题...请查看下面的评论):D
答案1
听上去像:
1)脚本并不像你(和其他人)想象的那么优化(除了轶事证据)
和
2) 您在远程 cURL 调用或硬盘驱动器(MySQL 写入/读取)上处于 IO 锁定状态
。
涉及事项包括:
大多数 OpenVZ 主机并非旨在提供他们宣传的最大资源。您的主机可能过度销售服务器资源,这会加剧您的问题。您应该考虑使用不同的 VPS 主机技术(VMWare、Hyper V、KVM)。如果您真的需要最大性能,我会考虑购买带有 SSD(或更多 RAID)的专用服务器,并可能从 MySQL 迁移到 Oracle(但这是另一天的辩论)。
总而言之,您最好的选择是购买一台便宜的专用服务器,其特点如下:
- 高 CPU 时钟速度(3.0GHz 或更高)
- 最低 1024 MB RAM(根据脚本的运行方式,向 MySQL 投入更多内存进行缓存可能会带来指数级的结果)
- 具有足够专用带宽的上游互联网连接,可供 cURL 调用。
您的 OpenVZ 主机很可能在硬盘上被 IO 锁定。即使访问专用的 SATA 驱动器也可以使您的性能提高 5-7 倍。
我也假设这是一条转发: 长时间运行脚本的服务器优化