我已经设置了一个新的 VPS 托管来运行 Drupal 网站,但是它非常慢。
它是 Ubuntu 10、Apache、php5.2
我已启用多处理模块(MPM)并对其进行如下配置:
启动服务器数 4 最小备用服务器数 2 最大备用服务器数 10 服务器限制数 20 最大客户端数 20 每个子节点的最大请求数 200
但是它还是太慢了...它是一个 VPS 切片:RAM 256MB BW 150GB
可能是什么原因?谢谢
更新(掉期)
total used free shared buffers cached
Mem: 245 220 24 0 1 26
-/+ buffers/cache: 192 52
Swap: 511 110 401
答案1
确保你不是定期访问交换空间任何事物- 磁盘 I/O 是一个非常常见的瓶颈,特别是在 RAM 分配相对较小的 Xen VPS 上(假设您在 Slicehost,因为您提到使用“切片”)。
虽然拥有交换空间似乎是一个优点(特别是因为当您尝试运行多个占用大量内存的应用程序(如带有动态 PHP 内容的 Apache 和 MySQL)时,您的 VPS 不会出现故障和死机),但它很快会导致性能下降,特别是当您在一个充满其他做同样事情的 VPS 主机节点上时。
编辑:我强烈推荐低端盒子 维基(LowEndBox 重点关注内存分配与您自己的内存分配在同一个邻域的虚拟环境)以获得优化技巧,使 Apache 和 MySQL 在您的虚拟环境中顺利运行。
答案2
这几乎肯定不是 Apache 配置问题,但您需要分析应用程序以找出其时间花在何处,而不是盲目猜测问题所在。Xdebug 是一种流行的 PHP 分析工具,如果 MySQL 在您的 VPS 中运行,则打开 MySQL 慢查询日志可能会有所帮助。
VPS 环境的问题部分在于,由于您的 VM 并不知道它实际上获得了哪些资源,因此几乎不可能确定您的服务器硬件是否严重超额认购。这让事情变得更加棘手。
答案3
首先尝试标准 mpm 设置:
<IfModule mpm_prefork_module>
StartServers 5
MinSpareServers 5
MaxSpareServers 10
MaxClients 150
MaxRequestsPerChild 0
</IfModule>
也许你还应该看看这个:http://articles.slicehost.com/2010/5/20/configuring-the-apache-mpm-on-debian 您还应该减少 KeepAlive 设置。
RAM 怎么样?你确定你有足够的内存,而且服务器没有交换吗?(free -m)
您还应该检查您的数据库,使用 Tuning Primer 脚本相对容易:http://www.day32.com/MySQL/
顺便说一句,在仅有 256MB RAM 的服务器上,我建议您使用其他 Web 服务器,如 Lighttpd 或 Nginx(带有 PHP-FPM)。
答案4
确保 localhost 指的是为外部访问配置的同一个 vhost,并尝试对其中的 URL 进行一些测量http://本地主机/(例如通过 ssh 隧道的浏览器、在虚拟服务器上运行的浏览器,或者仅编写一个 php 脚本来获取一些 url)这应该可以让您识别您的虚拟服务器之外是否应用了限制,或者问题是否出在您的服务器上。