友声网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
开启左侧

使用Nginx的小内存Linux服务器(主机)优化

[复制链接]
卡卡北 发表于 2018-1-31 13:48 | 显示全部楼层 |阅读模式
VPS主机或ECS云服务器,想站点稳定和流程的运行,优化是免不了的,而且VPS或ECS的内存较小,优化就显得更加重要了。
刚部署好网站的时候,经常出现打开页面一片空白,登录到VPS控制面板发现内存已经跑到100%了,不优化是不行了。
下面是我的优化过程,仅供参考,欢迎大神批评指正!

一、干掉 SendMail 进程

用 putty 登录到vps,输入top命令,在输入M,可以查看运行的各个进程和内存使用率。里面逐一查看,没用的干掉。首先牺牲的是SendMail,我基本用不到它。

执行命令:
  1. service sendmail stop
复制代码

再执行:
  1. chkconfig --list sendmail
复制代码

此时显示: sendmail 0:off 1:off 2:on 3:on 4:on 5:on 6:off
  1. chkconfig --level 2345 sendmail off
复制代码

这样sendmail被彻底关闭了。



二、nginx配置

打开nginx的配置文件 nginx.conf(我使用的LNMP在 /usr/local/nginx/conf/nginx.conf )
  1. vim /usr/local/nginx/conf/nginx.conf
复制代码

1、找到 worker_processes,nginx运行的进程数,一般设置成和CPU的核数相同:
  1. worker_processes 1;
复制代码

2、找到 worker_rlimit_nofile,nginx能打开文件的最大句柄数,修改为:
  1. worker_rlimit_nofile 40960;
复制代码

3、找到 worker_connections,nginx进程所允许的最大的连接数,修改为:
  1. worker_connections 10240;
复制代码

4、找到 keepalive_timeout,连接超时时间,修改为:
  1. keepalive_timeout 60;
复制代码

5、开启gzip,找到gzip的相关参数,修改为:
  1. gzip on; #支持gzip压缩
  2. gzip_static on; #支持静态缓存模块
  3. gzip_comp_level 5; #gzip压缩等级,1压缩比最小处理速度最快,9压缩比最大但处理速度最慢
  4. gzip_min_length 1024; #设置允许压缩的页面最小字节数
  5. gzip_buffers 4 8k; #gzip压缩缓存,是按块大小的倍数申请内存空间,这里以8k为一块,以8k的4倍大小申请内存
  6. gzip_types text/xml text/css text/javascript application/x-javascript application/xml; #设置需要压缩的MIME类型
  7. gzip_vary on; #vary header支持
  8. gzip_http_version 1.1; #用于识别http协议的版本
复制代码



三、php-fpm配置

打开配置文件,我的在/usr/local/php/etc/php-fpm.conf
  1. vim /usr/local/php/etc/php-fpm.conf
复制代码

以下配置是在pm = dynamic模式下的配置:

1、找到 pm.max_children,修改为:
  1. pm.max_children = 8;
复制代码
php-fpm子进程副本创建的最大数,创建的越多并发能力越强。同时修改空闲时进程数pm.min_spare_servers和pm.max_spare_servers,不能比pm.max_children大。

2、找到 ;pm.max_requests = 500,去掉注释,修改为:
  1. pm.max_requests = 250;
复制代码
接收多少次请求后重新建立php-fpm子进程

3、找到 ;request_terminate_timeout = 0 设置php脚本最大执行时间,去掉注释,修改为:
  1. request_terminate_timeout = 100
复制代码


四、系统相关
1、修改网络参数:
  1. vim /etc/sysctl.conf
复制代码

添加:
  1. net.ipv4.tcp_syncookies = 1
  2. net.ipv4.tcp_tw_reuse = 1
  3. net.ipv4.tcp_tw_recycle = 1
复制代码

2、修改系统ulimit限制:
  1. vim /etc/security/limits.conf
复制代码

增加两行:
  1. * soft nofile 40960
  2. * hard nofile 40960
复制代码

打开:
  1. vim /etc/pam.d/login
复制代码

增加如下一行:
  1. session required pam_limits.so
复制代码

在profile文件中增加一行,重启生效:
  1. echo "ulimit -SHn 40960" >> /etc/profile
复制代码



五、Mysql 配置
  1. vim /etc/my.cnf
复制代码

由于内存较小,不使用InnoDB,还是用回mysql5.1.x的MyISAM。如果内存足够还是推荐使用InnoDB。
在[mysqld]内添加:
  1. loose-skip-innodb
  2. default-storage-engine = MyISAM

  3. skip-external-locking
  4. skip-name-resolve
  5. skip-networking

  6. key_buffer_size = 32M
  7. max_allowed_packet = 2M
  8. table_cache = 64
  9. sort_buffer_size = 1M
  10. net_buffer_length = 8K
  11. read_buffer_size = 1M
  12. read_rnd_buffer_size = 1M
  13. myisam_sort_buffer_size = 16M
复制代码



六、php 配置

  1. vim /usr/local/php/etc/php.ini
复制代码

1、找到:
  1. zlib.output_compression = Off
  2. ;zlib.output_compression_level = -1
复制代码

修改为:
  1. zlib.output_compression = On
  2. zlib.output_compression_level = 5
复制代码

开启php gzip压缩。这里和nginx gzip压缩的东西不同,nginx是压缩html,css,javascript。php gzip是用来压缩php。

2、找到  memory_limit = 128M,修改php脚本使用的最大内存数,改为:
  1. memory_limit = 32M
复制代码

最后重启nginx、php-fpm、mysql:
  1. service nginx restart
  2. service php-fpm restart
  3. service mysqld restart
复制代码


RSS|无图版|手机版|友声网 ( 鲁ICP备15020090号-1 )|网站地图 | 点击这里给我发消息 |

GMT+8, 2024-4-26 16:26 , Processed in 0.019668 second(s), 8 queries , MemCache On.

Powered by Discuz! X

© ys166.com

快速回复 返回顶部 返回列表