我在 Digital Ocean 有一个 Linux Ubuntu 虚拟服务器,其规格如下:1 vCPU、2GB 内存和 25GB SSD 存储。
该服务器运行单个 WordPress 网站,每天有大约 400 名独立访客。已安装并配置缓存插件。服务器上还安装并配置了 Redis。
我已经在 Digital Ocean 的控制面板中设置了内存使用情况通知,并且每天都会多次收到通知,告知我服务器的使用率已超过 70% 的阈值。
当我在终端运行 htop 时,记忆元件显示随时都会使用 1.92GB 中的 1.2GB 到 1.4GB。交换显示使用了 2.00GB 中的 39.2MB。
当我在 WordPress 中安装的 Query Monitor 插件中查看峰值内存使用情况时,它显示仅使用了 768 MB 服务器限制的 3.2%。我在 WordPress 配置文件中将 PHP 内存限制定义为 768MB。这些数字似乎与服务器告诉我的有关服务器内存使用情况的数字相反。
在我的服务器的 my.cnf 中,我设置了以下参数:
- performance_schema = off
- innodb_buffer_pool_size = 512M
- 密钥缓冲区大小 = 64M
- 最大连接数 = 400
有人能告诉我服务器上哪里占用了过多的内存吗?
答案1
SHOW STATUS LIKE 'Max_used_connections';
——可能会比分配的 400 少得多;降低max_connections
到 30。您不应该使用 MyISAM;将 key_buffer_size 降低到 20M
删除缓存;您可能没有足够的活动来保证额外的缓存层。无论如何,buffer_pool 会完成大部分工作。另一方面,这可以改进索引以提高性能。它占用很少的 RAM: WP 索引改进
“PHP 内存限制为 768MB”——这似乎非常高。而且每个连接。将其降低到 100MB。如果 PHP 崩溃,那么让我们看看如何简化导致崩溃的网页。
如果您仍有记忆问题,请降低
innodb_buffer_pool_size
。