设为首页 收藏本站
查看: 1036|回复: 0

[经验分享] nginx,php,tomcat服务基本调优

[复制链接]

尚未签到

发表于 2018-12-5 07:14:14 | 显示全部楼层 |阅读模式
  nginx+php+mysql
  1.利用fastcgi_cache缓存,减少nginx与PHP交互,减轻php和数据库(mysql)的压力
  2.为zend引擎缓存opcode,使用X-cache缓存opcode,减少php脚本语句转换中间代码的次数
  3.利用TCMalloc优化Nginx和mysql的内存分配效率访问性能,提高高并发的性能(nginx本身对内存优化就很好,这里主要是针对mysql优化)
  4.安装最新的libevent提高nginx和php的事件触发性能
  5.开启gzip压缩网页文件
  6.优化nginx中fastcgi参数
  7.优化php-fpm参数
  lnmpa并不是说nginx不行,而是php-fpm不行,为了避免502所以才转由apache来处理php
  整体写的很不错,php这块可以在完善下。
  nginx+php-fpm 最大的瓶颈不在nginx,而是在php。
  1、如果是php ,nginx缓存php 最好别开。
  2、EA的最新版本性能比Xcache要好。且对新的PHP支持较好
  3、pm.max_children = 50 #最大进程数
  pm.start_servers = 5 #初始进程数
  pm.min_spare_servers = 2 #最小空闲进程
  pm.max_spare_servers = 8 #最大空闲进程
  php-fpm的模式分静态跟动态,静态的话只第一个参数生效,动态后面设置才有用
  php-fpm 优化
  单个php-fpm实例,使用socket方式,内存8G 静态方式,启动php-fpm进程数300
  增大pm.max_children为400
  nginx和fpm 添加了 listen.backlog = 2048
  最大打开文件句柄数 65535
  /etc/sysctl.conf 都进行了微调,高并发时nginx发起的连接数,远远超过了php-fpm所能处理的数目,导致端口(或socket)频繁被锁,造成堵塞。依然出现502错误
  启用两个php-fpm实例,把php-fpm分为两部分,每部分各听一个端口或socket,这样就减少了lock,依然保持400个php-fpm进程,每个实例启用200个,采用nginx的upstream负载均衡,轮询每个socket来处理请求。
  高并发时使用tcp端口的方式比socket方式相对稳定一点,但是使用端口的方式,处理的效率确实比socket效率低了那么一点
  pm = static | dynamic | ondemand 静态池、服务优先、内存优先
  pm.max_children = 256  开启的最大php进程数
  pm.max_requests = 1024   在执行了1024个请求后重启worker进程
  这也是我们线上服务器的配置,我们线上用的web服务的机器是12核cpu、12G内存,nginx开启12个worker进程,php开启256个进程,跑起来后每个进程大概占用30M内存,也就是(256+12)*30=8G ,另外还跑了一些配管、监控、统计、日志收集等七七八八的软件,整体业务是比较轻松的,这种静态池的配置大大减少了prefork进程带来的开销,RT时间100ms以内的占到90%以上
  php的工作进程数也不是越大越好,这种进程模型运行时间长了占的内存会增大,一般一个php进程是占到30M左右的内存,开多少合适自己算吧,nginx的worker进程一般也能跑到30M的内存,综合计算一下;php的执行时间可以根据你的服务标准来设定,超过服务时间浏览器返回的是502错误,这个按照实际的情况处理吧,一般情况要设置超时时间,避免某些请求慢,将整个业务堵死;至于backlog值,当程序写的比较好时,建议设置其数量为php工作进程的1到2倍。
  另外:在配置过程中,比如遇到大并发或者是特殊业务的场景,不合理的fd、buffer等设置也会带来5XX错误,比如说大并发连接的业务要增大系统和单个程序的fd数量,如果是上传业务要增大头buffer等,这些要视情况而做优化,正所谓道法自然,术变万千,要以不变应万变
  java+tomcat
  tomcat的三种运行模式选择
  屏蔽DNS查询 修改的属性是enableLoopups="false"
  调整线程数
  调整最大连接数 一般设置为maxProcessors的1.5倍即可
  调整网络超时
  一般设置成connectionTimeout="30000"
  压缩管理
  compression="on"            # 打开压缩功能
  compressionMinSize="50"     # 启用压缩的输出内容大小,默认为2KB
  noCompressionUserAgents="gozilla, traviata"      # 对于以下的浏览器,不启用压缩
  compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain"
  JVM内存调优
  比如其初始空间(即-Xms)是物理内存的1/64,最大空间(-Xmx)是物理内存的1/4
  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-643373-1-1.html 上篇帖子: tomcat免安装配置 下篇帖子: linux下tomcat安装配置
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

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