Linux下500M内存,nginx php mysql 怎么分?

ueaner 发布于 2013/08/09 15:23
阅读 779
收藏 3
Linux 内存资源分配,给你500M内存,资源有限,nginx php 和 mysql 怎么分配效果最好(速度,并发)呢?
加载中
0
eechen
eechen

MySQL来份my-medium.cnf,配置里说的很清楚,也就是说MySQL占用的内存不会超过64M:
This is for a system with little memory (32M - 64M) where MySQL plays an important part, or systems up to 128M where MySQL is used together with other programs (such as a web server)

cp /usr/share/mysql/my-medium.cnf /etc/my.cnf

每个php-fpm占用20M左右的内存,max_children默认5个,子进程太多反而会增加master process调度的负担,而且CPU进行过多的上下文切换也会浪费系统资源,得不偿失,所以按php-fpm.conf默认配置就好:
pm = dynamic
pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3
php-fpm很像httpd用prefork那样运行,开始时fork出2个进程,根据请求数的增多自动fork多更多的子进程,配置里默认最多是5个。如果你的CPU多核,很强劲,max_children也可以设大点,比如可以设10个,要注意的是,即使内存够大,max_children也不要弄太多,CPU得跟得上才行。

至于nginx.conf,默认值就好,默认是1个工作进程,单个工作进程最大并发1024。
worker_processes  1;
worker_connections  1024;
别看Nginx默认才一个工作进程(里面包含一个主线程),这并不妨碍Nginx高效。
httpd prefork那一堆工作进程,静态和动态请求都一样占用线程,性能真没Nginx好。
对于多核CPU,Nginx还可以配置绑定worker_processes到物理核芯,充分利用多核CPU。

ueaner
ueaner
回复 @eechen : 好好,这个太好了,RES:108m,%MEM:22.2,非常感谢!!!
ueaner
ueaner
回复 @eechen : 这个还真不是,用的 Percona Server 的默认配置,我用 my-medium.cnf 试一下
eechen
eechen
回复 @ueaner : 你确定用的是my-medium.cnf吗?
ueaner
ueaner
top -u mysql 返回的RES是331m, %MEM是67.7,这个内存占的是不是太大了
0
月影又无痕
月影又无痕

得看你需要多少并发了

php-fpm子进程要少一些(不要超过10个),每个php-fpm工作进程占用内存30M左右

nginx 进程数和cpu个数一样就可以了

ueaner
ueaner
同意,mysql主要吃内存的是哪些呢?
0
hefeimissyou
hefeimissyou

看服务类型了,如果是计算的,nginx占不了多少,剩下的都给php-fpm好了。。。


如果服务中有io,因为内存紧张,可以考虑换支持异步io的框架,比如。。tornado~~如果实现全异步,进程数跟cpu一样就好。。很省内存的

ueaner
ueaner
使用IO降低内存的使用,这也是一种方法,+1
0
OscerSong
OscerSong
问题是你打开应用服务的限制没?
ueaner
ueaner
不明白
返回顶部
顶部