lnmp优化有哪些
发布日期: 2022/11/16 阅读总量: 83

谈谈lnmp都有哪些优化

什么是lnmp


l表示linux系统,n表示nginx,m表示mysql,,p代表php


首先说说linux系统优化(14项优化)


1、不要使用root登录管理系统,而是以普通用户身份登陆,通过sudo授权


2、更改默认的远程连接ssh服务器端口,禁止root用户远程连接


3、定时自动更新服务器的时间,使其与互联网时间同步


4、配置yum源,从国内源下载安装软件包


5、关闭selinux


6、调整文件描述符,进程及文件的打开都会消耗文件描述符数量(默认1024, 生产环境一般不够)


7、定时自动清理邮件临时目录垃圾文件,防止磁盘的inodes数被小文件占满


8、精简开机服务(关闭没必要的服务)


9、linux内核参数优化/etc/sysctl.conf,执行sysctl -p生效


10、锁定关键系统文件(如/etc/passwd,/etc/group,/etc/shadow等文件)


11、更改系统字符集防止乱码“zh_CN.UTF-8”,使其支持中文


12、清空/etc/issue、/etc/issue.net,去除系统及内核版本登陆前的屏幕显示


13、清除多余的系统虚拟用户账号


14、为grup引导菜单加密码


 


nginx优化


1、隐藏Nginx版本号信息


2、更改Nginx服务的默认用户


3、优化Nginx服务的worker进程个数


4、优化绑定不同的Nginx进程到不同CPU上


5、Nginx事件处理模型优化


6、调整Nginx单个进程允许的客户端最大连接数


7、配置Nginx worker进程最大打开文件数


8、开启高效文件传输模式


9、优化Nginx连接参数调整连接超时时间


10、上传文件大小(http Request body size)的限制


11、fastcgi相关参数调优(配合PHP引擎动态服务)


12、配置Nginx gzip压缩实现性能优化


13、配置Nginx expires缓存实现性能优化


14、Nginx日志相关优化


15、Nginx站点目录及文件URL访问控制


16、限制网站来源IP访问 


17、配置Nginx禁止非法域名解析访问企业网站


18、Nginx图片及目录防盗链解决


19、错误页面优雅显示


20、Nginx站点目录文件及目录权限优化


21、Nginx防爬虫优化


22、利用Nginx限制HTTP的请求方法


23、使用CDN做网站加速


24、使用普通用户启动Nginx(监牢模式)


25、控制Nginx并发连接数


26、控制客户端请求Nginx的速率



Mysql优化


MYSQL优化主要分为以下四大方面:


设计:存储引擎,字段类型,范式与逆范式


功能:索引,缓存,分区分表。


架构:主从复制,读写分离,负载均衡。


具体优化:


 

PHP服务缓存加速优化


1.操作码介绍及缓存原理


    当客户端请求一个php程序时,服务器的PHP引擎会解析该PHP程序,并将其编译为特定的操作码文件(Operate Code,opcode)该文件是执行PHP代码后的一种二进制表示形式。默认情况下,这个编译好的操作码文件由PHP引擎执行后丢弃。而操作码缓存(Opcode cache)的原理就是讲编译后的操作码保存下来,冰岛共享内存里,以便在下一次调用该PHP页面时重用它,避免了相同代码的重复编译。节省了PHP引擎重复编译的时间,降低了服务器负载,同时减少了CPU和内存开销。加速性能可以达到2-10倍

2.PHP缓存加速软件介绍


    为了提高PHP引擎的高并发访问及执行速度,产生了一系列PHP缓存及加速软件。这些软件设置的目的就是缓存PHP引擎解析过的操作码文件,以便在指定时间内有相同的PHP程序请求访问时,不再需要重复解析编译,而是直接调用缓存中的PHP操作码文件,这样就提高了动态Web服务的处理速度,从而提升了用户访问企业网站的整体体验。

3、LNMP环境PHP缓存加速器原理详解


   在LNMP环境中,PHP引擎不再使用libphp5.so模块了,而是启动了独立的FCGI即php-fpm进程,由它监听来自nginx的PHP程序请求,并交给PHP引擎解析处理,整个执行流程大概如下:

  1)Nginx接收客户端的PHP程序访问请求。

  2)Nginx根据扩展名等过滤规则将PHP程序请求传递给解析PHP的FCGI进程(PHP-FPM)

  3)PHP FPM进程调用PHP解析器读取站点磁盘上的PHP文件,并加载到内存中。

  4)PHP解析器将PHP程序编译为opcode文件,然后把opcode缓存起来。

  5)PHP FPM引擎执行opcode树,返回数据给Nginx,进而返回客户端。

  6)Nginx 接收客户新的PHP程序请求,PHP FPM引擎就会直接读取缓存中的opcode执行,将结果返回,该过程中无需第4步操作,从而提升了PHP编译解析效率。