我正在使用 Bitnami 在 AWS EC2 t3a.medium (4Gb Ram) 实例上运行 WordPress 网站。服务器的 RAM 经常被完全填满,导致服务器崩溃,我需要从 ec2 控制台重新启动它。
我已经研究过调整我的 php-fpm 设置来缓解这个问题。
当前配置如下:
opt/bitnami/php/etc$ cat memory.conf
pm.max_children = 47
pm.start_servers = 20
pm.min_spare_servers = 20
pm.max_spare_servers = 30
pm.max_requests = 2500
MariaDB配置文件:
[mysqladmin]
user=****************
[mysqld]
skip_name_resolve
explicit_defaults_for_timestamp
basedir=/opt/bitnami/mariadb
port=3306
tmpdir=/opt/bitnami/mariadb/tmp
socket=/opt/bitnami/mariadb/tmp/mysql.sock
pid_file=/opt/bitnami/mariadb/tmp/mysqld.pid
max_allowed_packet=16M
bind_address=127.0.0.1
log_error=/opt/bitnami/mariadb/logs/mysqld.log
slow_query_log=1
slow_query_log_file=/opt/bitnami/mariadb/logs/mysqld_slowquery.log
long_query_time=10.0
character_set_server=utf8
collation_server=utf8_general_ci
plugin_dir=/opt/bitnami/mariadb/lib/plugin
[client]
port=3306
socket=/opt/bitnami/mariadb/tmp/mysql.sock
default_character_set=utf8
plugin_dir=/opt/bitnami/mariadb/lib/plugin
[manager]
port=3306
socket=/opt/bitnami/mariadb/tmp/mysql.sock
pid_file=/opt/bitnami/mariadb/tmp/mysqld.pid
!include /opt/bitnami/mariadb/conf/bitnami/memory.conf
内存.conf:
long_query_time = 1
query_cache_limit=2M
query_cache_type=1
query_cache_size=128M
innodb_buffer_pool_size=256M
/opt/bitnami/mariadb/logs/mysqld_slowquery.log:https://pastebin.com/ZVecqAXp
答案1
对 my.cnf [mysqld] 部分的建议
innodb_max_dirty_pages_pct_lwm=0.001 # to enable pre flushing
innodb_max_dirty_pages_pct=0.001 # to reduce 1,067 dirty pages
请在应用这些全局变量一天后发布 SHOW GLOBAL STATUS LIKE '%dirty%'; 的文本结果。
当我们将脏页控制在缓冲池的 7% 以下时,就有更多机会提高处理速度。请查看我的个人资料。
答案2
这是我在 t3a.nano(512MB RAM)上运行的程序,它运行五个低容量的 Wordpress 网站,以及一些其他软件。t3.medium 的 CPU 比我的 t3.nano 多四倍,RAM 多八倍,因此您可能可以将这些数字乘以四甚至八 - 需要根据您的部署和负载进行实验才能得出这个结果。
如果将 max_children 设置为 20 后服务器仍未启动,我怀疑是其他设置不正确。也许您正在进行一些积极的缓存?将 max_children 设置为 10 后,各种日志会显示什么?我不知道为什么您需要运行超过 10 个线程才能启动。
PHP 7.4
pm.max_children = 3
pm.start_servers = 1
pm.min_spare_servers = 1
pm.max_spare_servers = 1
pm.max_requests = 50
MySQL 8
innodb_buffer_pool_size=50M
innodb_flush_method=O_DIRECT
innodb_log_buffer_size=1048576
innodb_log_file_size=4194304
innodb_max_undo_log_size=10485760
innodb_sort_buffer_size=64K
innodb_ft_cache_size=1600000
innodb_max_undo_log_size=10485760
max_connections=20
key_buffer_size=1M
thread_stack=140K
thread_cache_size = 2
read_buffer_size=8200
read_rnd_buffer_size=8200
max_heap_table_size=16K
tmp_table_size=128K
temptable_max_ram=2097152
bulk_insert_buffer_size=0
join_buffer_size=128
net_buffer_length=1K