近期调优总结

近期由于公司举行大促,访问量巨增,预计流量为平时流量的60倍,在增加了两台服务器后,为了更大程度的压榨服务器性能,从各个层面上进行了优化,现在做下总结以备忘。

1)nginx优化

nginx优化主要涉及多核,IO线程数(需要同步修改系统IO),epoll,gzip等等,可能还会涉及upstream,注意以下标红部分:

worker_processes 8;
worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000;
error_log  /var/log/nginx_error.log  error;
pid        /opt/nginx-1.2.0/nginx.pid;worker_rlimit_nofile 65535;
events 
{
  use epoll;worker_connections 65535;
}http 
{include       mime.types;default_type  application/octet-stream;charset  utf-8;server_names_hash_bucket_size 128;client_header_buffer_size 32k;large_client_header_buffers 4 32k;client_max_body_size 8m;sendfile on;tcp_nopush     on;keepalive_timeout 60;tcp_nodelay on;server_tokens off;fastcgi_connect_timeout 300;fastcgi_send_timeout 300;fastcgi_read_timeout 300;fastcgi_buffer_size 128k;fastcgi_buffers 8 128k;fastcgi_busy_buffers_size 128k;fastcgi_temp_file_write_size 128k;gzip on;gzip_min_length  1k;gzip_buffers     4 16k;gzip_http_version 1.0;gzip_comp_level 2;gzip_types       text/plain application/x-javascript text/css application/xml text/javascript application/json;gzip_vary on;add_header Vary Accept-Encoding;#log_format access '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" $request_time';log_format  access '$http_x_forwarded_for - $remote_user [$time_local] "$request"  $status $body_bytes_sent "$http_referer"  "$http_user_agent" $request_time ';access_log  /var/log/httpd/search_access.log  access;server{listen       80;server_name  localhost;ssi on;ssi_silent_errors off;
location / {root   /data/www;index  index.html index.htm index.php index.jsp;expires 1d;}location /app {
       proxy_pass    http://localhost/app;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;client_max_body_size 50m;client_body_buffer_size 256k;proxy_connect_timeout 30;proxy_send_timeout 30;proxy_read_timeout 60;proxy_buffer_size 256k;proxy_buffers 4 256k;proxy_busy_buffers_size 256k;proxy_temp_file_write_size 256k;proxy_next_upstream error timeout invalid_header http_500 http_503 http_404;proxy_max_temp_file_size 128m;}error_page  404  403         /404.html;
     error_page  500 502 503 504  /50x.html;location = /50x.html {root   html;}location = /404.html {root   html;}}
}

备注:除了以上标红的部分外,还需要注意,如果想在nginx日志中获取访问端ip的话,如果前端有负载均衡设备时,需要使用上面橙色部分配置;否则则使用上面蓝色部分配置。

2)应用服务器优化

应用服务器包含tomcat,resin,主要涉及调整VM参数,IO调整为NIO,线程数,日志配置等等;

2.1)resin.conf配置:

      <jvm-arg>-Xmn2500m</jvm-arg><jvm-arg>-Xms4000m</jvm-arg><jvm-arg>-Xmx4000m</jvm-arg><jvm-arg>-XX:PermSize=256M</jvm-arg><jvm-arg>-XX:MaxPermSize=256m</jvm-arg><jvm-arg>-XX:+UseParNewGC</jvm-arg><jvm-arg>-XX:+UseConcMarkSweepGC</jvm-arg><jvm-arg>-XX:+UseCMSCompactAtFullCollection</jvm-arg><jvm-arg>-XX:CMSFullGCsBeforeCompaction=0</jvm-arg><jvm-arg>-XX:+CMSClassUnloadingEnabled</jvm-arg><jvm-arg>-XX:-CMSParallelRemarkEnabled</jvm-arg><jvm-arg>-XX:CMSInitiatingOccupancyFraction=80</jvm-arg><jvm-arg>-Xss512k</jvm-arg><!--<jvm-arg>-XX:-OmitStackTraceInFastThrow</jvm-arg><jvm-arg>-XX:+PrintGCDetails</jvm-arg><jvm-arg>-XX:+PrintGCTimeStamps</jvm-arg><jvm-arg>-XX:+PrintHeapAtGC</jvm-arg><jvm-arg>-Xloggc:serverGC.log</jvm-arg>--><jvm-arg>-Dcom.sun.management.jmxremote</jvm-arg>

其中-XX:-OmitStackTraceInFastThrow用于应用出现了IndexOutOfBoundsException看不到异常堆栈的情况,打开这个参数以关闭虚拟机优化,让堆栈重新抛出,以便定位问题;

所有GC的参数是为了查看GC日志,如果FullGC很频繁则需要进行VM的新生代及老年代的调整,以减少FullGC次数。

2.2)tomcat的server.xml配置

    <Connector port="8080" protocol="org.apache.coyote.http11.Http11NioProtocol" connectionTimeout="10000" maxThreads="500"minSpareThreads="100"maxSpareThreads="300"acceptCount="100"redirectPort="8443"URIEncoding="utf-8" />

其中org.apache.coyote.http11.Http11NioProtocol用于将tomcat的处理模式修改为NIO。

2.3)tomcat的catalina.sh配置

JAVA_OPTS="-server -Xmn2500m -Xms4000m -Xmx4000m -XX:PermSize=256M -XX:MaxPermSize=256m -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:+UseCMSCompactAtFullCollection -XX:CMSFullGCsBeforeCompaction=0 -XX:+CMSClassUnloadingEnabled -XX:-CMSParallelRemarkEnabled -XX:CMSInitiatingOccupancyFraction=80 -Xss512k -Dclient.encoding.override=UTF-8 -Dfile.encoding=UTF-8 $JAVA_OPTS"
echo $JAVA_OPTS

调整VM参数,同resin一样。

2.4)tomcat的logging.properties配置

参考这篇博文:解决Tocmat6.x的catalina.out日志不断增加问题

整个优化过程还包括,尽可能的解决可能出现瓶颈的地方,比如压力测试的瓶颈点,不要去访问数据库等等,都是需要注意的。

 

 

转载于:https://www.cnblogs.com/javapro/archive/2013/03/26/2983041.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/295705.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SQL注入漏洞全接触--高级篇

2019独角兽企业重金招聘Python工程师标准>>> 看完入门篇和进阶篇后&#xff0c;稍加练习&#xff0c;破解一般的网站是没问题了。但如果碰到表名列名猜不到&#xff0c;或程序作者过滤了一些特殊字符&#xff0c;怎么提高注入的成功率?怎么样提高猜解效率?请大家接…

除了沉迷酒色之外,你还做过什么?

1 是了&#xff0c;说的就是我▼2 你这叫落井又下石...▼3 如何让衣服瞬间好看&#xff1f;▼4 自己品品...▼5 买家秀与卖家秀▼6 舍友的水杯...妥妥养生局&#xff01;▼7 还有...▼你点的每个赞&#xff0c;我都认真当成了喜欢

ssl certificate 验证

2019独角兽企业重金招聘Python工程师标准>>> 生成certificate&#xff1a; client 验证certificate&#xff1a; 转载于:https://my.oschina.net/u/255456/blog/545568

使用C#开发交互式命令行应用

前言如果你开发过vue应用&#xff0c;应该对其交互式命令行印象深刻&#xff1a;它允许你无需任何编程经验&#xff0c;仅需回答问题&#xff0c;就可完成vue应用创建。虽然作为.NETer&#xff0c;大部分情况下我们不会使用命令行&#xff0c;但是还是希望能用C#开发出这样的交…

Android之JSON处理器FastJson

FastJson fastjson 是一个性能很好的 Java 语言实现的 JSON 解析器和生成器&#xff0c;来自阿里巴巴的工程师开发 主要特点&#xff1a; 快速FAST (比其它任何基于Java的解析器和生成器更快&#xff0c;包括jackson&#xff09; 强大&#xff08;支持普通JDK类包括任意Java B…

300 s7 置零指令_西门子1200与200、200 SMART置位复位指令的区别

S7-1200的位逻辑指令&#xff0c;这也是我们在学习PLC编程时最先接触到的指令&#xff0c;最基本的指令。位逻辑运算指令是对二进制位进行操作的指令&#xff0c;数据类型是BOOL型&#xff0c;这其中又包括了触点指令与赋值指令、置位与复位指令、沿脉冲检测指令这三个部分。在…

【SAS NOTES】sas对中文的支持

对sas文件的修改 nls\en\SASV9.CFG81行找到/* SAS/SHARE APPLSYS macro library pathname */-SET SASSAML !sasext0\share\sasmacro\在后面加入-DBCSLANG CHINESE-DBCS-DBCSTYPE PCMS180行处找到/* Setup the SAS System load image search paths definition */-PATH (在下一行…

惊现试衣间照片流出??

1 论断句的重要性▼2 这是个有味道的手机壳▼3 啊这...就挺秃然的&#xff08;素材来源网络&#xff0c;侵删&#xff09;▼4 男朋友的瘦肉礼物&#xff08;via.苍南派&#xff09;▼5 哭泣吧&#xff0c;打工人&#xff01;&#xff01;▼6 朋友送的生日礼物被子还是衣服啊…

【转载】创建型-工厂方法模式

介绍&#xff1a;在简单工厂模式中&#xff0c;我们提到&#xff0c;工厂方法模式是简单工厂模式的一个延伸&#xff0c;它属于Gof23中设计模式的创建型设计模式。它解决的仍然是软件设计中与创建对象有关的问题。它可以更好的处理客户的需求变化。引入我们继续来说"new&q…

主机挂载存储_备战CKA每日一题——第3天 | 对接CSI存储知识

本活动在微信公众号【我的小碗汤】上举行&#xff0c;这里参与答题无效哦&#xff01; 昨日考题 在Kubernetes PVCPV体系下通过CSI实现的volume plugins动态创建pv到pv可被pod使用有哪些组件需要参与&#xff1f; A. PersistentVolumeController CSI-Provisoner CSI controll…

Android之Android Studio常用插件

Android Studio常用插件 Android Studio常用插件ButterKnife Zelezny官网&#xff1a;http://jakewharton.github.io/butterknife/github&#xff1a;https://github.com/JakeWharton/butterknife功能&#xff1a;将光标停留在Activity中onCreate方法中setContentView方法的xml…

如何在 .NETCore 中修改 QueryString ?

咨询区 vcsjones&#xff1a;我有一个绝对路径的 url 包含了 querystring&#xff0c;现在我想对 querystring 进行修改和添加&#xff0c;我不想生硬的用字符串提取&#xff0c;或者是 正则表达式&#xff0c;而且还有恶心的 编码解码 问题&#xff0c;所以我更希望用 .NETCor…

VNCServer 配置

1、首先要配置的是服务端A 确认服务器端是否安装了vncserver使用rpm –qa vnc命令如果收到如下信息说明已经安装了vncserver&#xff0c;[rootlocalhost: ~]#rpm -qa |grep vncgtk-vnc-python-0.3.2-3.el5vnc-server-4.1.2-14.el5gtk-vnc-0.3.2-3.el5vnc-4.1.2-14.el5B从光盘找…

转 c#读写xml文件

已知有一个XML文件&#xff08;bookstore.xml&#xff09;如下&#xff1a;<?xml version"1.0" encoding"gb2312"?><bookstore> <book genre"fantasy" ISBN"2-3631-4"> <title>Oberons Legacy</titl…

招人!招人!这篇推文不要标题,只要你!

对&#xff0c;没错&#xff0c;就是这么直接超模君要要要要招人了因为我们知道很多有才华有能力的人并没有找到适合自己的工作比如你每当夜幕降临躺在床上仰望星空&#xff08;望着天花板&#xff09;的时候你的内心是不是都充满了迷茫&#xff1f;但&#xff0c;这并不是你的…

Android之INSTALL_FAILED_INSUFFICIENT_STORAG解决办法

INSTALL_FAILED_INSUFFICIENT_STORAG 有时候我们项目再次运行的时候,会出现INSTALL_FAILED_INSUFFICIENT_STORAG错误,先翻译下是什么意思,实例化失败由于空间不足,师傅告诉我重启手机,第一次还真有效,后来又有这个错误,然后我到网上找到了一些方法。 解决办法一…

用python爬虫抓站的一些技巧总结

转自http://obmem.info/?p476 1.最基本的抓站 import urllib2 content urllib2.urlopen(http://XXXX).read() -2.使用代理服务器这在某些情况下比较有用&#xff0c;比如IP被封了&#xff0c;或者比如IP访问的次数受到限制等等。 import urllib2 proxy_support urllib2.Prox…

第六届中国开源年会(COSCon'21)开心开源精彩收官

“ 点击蓝字 / 关注我们 ”第六届中国开源年会开心开源 Happy Hacking精彩收官&#xff01;开源社作为国内第一个专注于开源治理、国际接轨、社区发展&#xff0c;以及开源项目的开源社区&#xff0c;完全由志愿贡献于开源事业的个人成员组成。 由开源社主办的 “中国开源年会 …

matlab浮点数求绝对值_MATLAB仿真阵列天线切比雪夫综合法(附代码)

来源&#xff1a;cnblogs在《自适应天线与相控阵》这门课中&#xff0c;了解到了关于理想低副瓣阵列设计的一些方法&#xff0c;其中切比雪夫等副瓣阵列设计方法是一种基础的方法&#xff0c;故将其设计流程写成maltab程序供以后学习使用。在此分享一下。 此方法全称为道尔夫-切…

基于Redis的MQ中间件实现-目录

众所周知&#xff0c;Redis提供了发布订阅功能以及利用List数据结构可以实现消息队列的功能&#xff0c;本来这些也没什么技术难度&#xff0c;但是每次写这些程序时候&#xff0c;生产者和消费者都要写一些重复代码&#xff08;管理Redis&#xff09;和一些容易混乱的代码&…