标题:centos + nginx + php + mysql + java 内存性能调优

发表于

系统内存2GB,规划分配给tmpfs /dev/shm 占用内存512MB,swap文件分区占用硬盘1024MB。
按照以下调优结果,稳定运行所有程序后,used 900MB,buff/cache 600MB,free 400MB。其中java,mysql,php-fpm分别占用内存都是300MB左右,java瞬间最大可占用内存400MB,nginx占用内存很小,可忽略。
注意这个tmpfs /dev/shm,512MB不能太大,因为java进程只考虑free内存是否够用,并不会从buff/cache中释放空间,如果分配给tmpfs太大,buff/cache就会很大,free内存就会不够java使用,导致java闪退。

临时文件系统,配置文件/etc/fstab

tmpfs /dev/shm tmpfs defaults,size=512M 0 0
tmpfs /run tmpfs defaults,size=512M 0 0
/root/swapfile swap swap defaults 0 0

nginx 配置文件/etc/nginx/nginx.conf

fastcgi_buffer_size 256k;
fastcgi_buffers 4 256k;
fastcgi_busy_buffers_size 256k;
fastcgi_temp_file_write_size 256k;

php-fpm 配置文件/etc/php-fpm.d/www.conf

pm.max_children = 25
pm.start_servers = 10
pm.min_spare_servers = 10
pm.max_spare_servers = 20

php opcache 配置文件/etc/php.d/opcache.ini

opcache.enable=1
opcache.enable_cli=1
opcache.memory_consumption=256
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=2000
opcache.revalidate_freq=2
opcache.fast_shutdown=1

mysql 配置文件/etc/my.cnf

explicit_defaults_for_timestamp=true
performance_schema_max_table_instances=4000
table_definition_cache=2048
table_open_cache=1024

java 配置文件$TOMCAT_HOME/bin/catalina.sh

JAVA_OPTS="-server -Xms64m -Xmx128m -XX:PermSize=64M -XX:MaxPermSize=128m"