我最近更换了网络托管服务。新主机比旧主机慢(VPS 与专用主机)。但是,性能测试报告显示,很大一部分速度减慢是由数据库驱动的。
我有一个参考操作。在旧主机上,它平均运行 2.2 秒,数据库访问时间为 0.2 秒。在新主机上,平均运行 18 秒,数据库时间为 14 秒。
服务器相同 - 两种情况下都是本地 MySQL v. 5.0.91-community。通过 Unix 套接字连接。
什么原因造成这种差异?我应该查看哪些服务器设置?
答案1
VPS 机箱的磁盘系统通常依赖于其他操作系统的磁盘使用情况,因此有时会非常慢。VPS 系统的内存量较小会使情况更加恶化。
尝试调整数据库硬盘访问或请求独立硬盘。
使用查询缓存可能是一把双刃剑。
答案2
专用于 VPS 的 RAM 太少。
答案3
新机器上禁用了查询缓存。将 query_cache_size 调整到与旧值一致,执行时间缩短到 3 秒左右。
答案4
还需要观察每个 CPU 的利用率 - 您可能只分配了一个硬件线程或单个核心的份额,具体取决于您的 VPS 托管的服务器的操作系统平台和硬件架构。您很可能是 Solaris Zone(甚至可能是共享通用内核的 Sparse Zone)或 Linux Jail...
I/O 数据流也将被共享,因此如果您的某些查询需要表扫描,您将与其他用户发生冲突,并等待他们的操作完成一些周期。
听起来就像一个经典的虚拟化“第 22 条军规”——更便宜的服务和集中资源管理,但在峰值负载下性能较慢。