记录一次砸奖活动部署,对tomcat、nginx的优化

最近部署了一个房地产的活动推广,通过砸金蛋的方式派发奖品吸引用户去售楼部看房。考虑到负载均衡,使用了 nginx + tomcat + mysql 的分离部署方式,阿里云的内网流量是免费的,所以按量付费的情况会比较划算。下面记录对nginx、tomcat的配置优化。

tomcat:

tomcat默认采用Bio的模式,虽然自带有Nio,但是性能提升不明显,使用apr库性能提升更大,所以我们将:1 下载tomcat,2 安装apr库,3 安装tomcat-native (利用 APR 来提升Tomcat性能的本地API)1. 下载tomcat:我比较喜欢把应用放在/opt 目录下 进入 opt 目录,下载tomcat8(tomcat官网有下载地址):

cd /opt

mkdir install

cd /opt/install

wget http://mirrors.hust.edu.cn/apache/tomcat/tomcat-8/v8.0.39/bin/apache-tomcat-8.0.39.tar.gz

cd /opt

tar zxvf /opt/install/apache-tomcat-8.0.39.tar.gz

# 创建一个install目录,用来放安装过程中的一些文件,看个人喜好。

2. 安装apr库:http://apr.apache.org/download.cgi这里去下载,会有三个包需要安装:

APR主库:

cd /opt/install

wget http://mirrors.tuna.tsinghua.edu.cn/apache//apr/apr-1.5.2.tar.gz

tar zxvf apr-1.5.2.tar.gz

cd apr-1.5.2

./configure --prefix=/usr/local/apr

make

sudo make install

# 工具类都装到 /usr/local 符合传统,我会把常用的放到 /opt 下,看个人习惯吧

APR iconv:

cd /opt/install

wget http://mirrors.tuna.tsinghua.edu.cn/apache//apr/apr-iconv-1.2.1.tar.gz

tar zxvf apr-iconv-1.2.1.tar.gz

cd apr-iconv-1.2.1

./configure --prefix=/usr/local/apr-iconv --with-apr=/usr/local/apr

make

sudo make install

APR-util:

cd /opt/install

wget http://mirrors.tuna.tsinghua.edu.cn/apache//apr/apr-util-1.5.4.tar.gz

tar zxvf apr-util-1.5.4.tar.gz

cd apr-util-1.5.4

./configure --with-apr=/usr/local/apr

make

sudo make install

# 我都是把下载到包和安装过程中编译到东西统一放到了 /opt/install 目录,看个人喜好。

安装好了后,在系统变量中添加,然后 source /etc/profile 使变量生效:

vim /etc/profile

末尾添加:export LD_LIBRARY_PATH=/usr/local/apr/lib

source /etc/profile

3. 安装Tomcat Native 来调用apr库,提升tomcat性能,需要使用 openssl 1.0.2 以上版本(通过命令 openssl version 查看版本来决定是否安装openssl:

openssl:https://www.openssl.org/source/

cd /opt/install

wget https://www.openssl.org/source/openssl-1.1.0c.tar.gz

tar zxvf openssl-1.1.0c.tar.gz

cd openssl-1.1.0c

./config --prefix=/usr/local/openssl -fPIC

make

sudo make install

mv /usr/bin/openssl ~

ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl

openssl version

# -fPIC 参数请自行百度, install 后是为了更新软链

Tomcat Native:http://tomcat.apache.org/download-native.cgi

cd /opt/install

wget http://mirrors.cnnic.cn/apache/tomcat/tomcat-connectors/native/1.2.10/source/tomcat-native-1.2.10-src.tar.gz

tar zxvf tomcat-native-1.2.10-src.tar.gz

cd tomcat-native-1.2.10-src/native

./configure --with-apr=/usr/local/apr --with-ssl=/usr/local/openssl

make

sudo make install

tomcat 所依赖的库安装完毕,现在设置tomcat的配置文件:


protocol="org.apache.coyote.http11.Http11AprProtocol"

connectionTimeout="20000"

redirectPort="8443"

maxThreads="500"

minSpareThreads="20"

acceptCount="300"

disableUploadTimeout="true"

enableLookups="false"

URIEncoding="UTF-8" />

unpackWARs="true" autoDeploy="true">

prefix="localhost_access_log" suffix=".txt"

pattern="%h %l %u %t "%r" %s %b" />

tomcat 的配置文件就是这样,可以查询每项的意义自己调整。tomcat最主要的优化在于JVM 的设置,这篇文章Linux中JDK安装:通过命令行安装和手动安装手动安装的方式,环境变量中的 JAVA_OPTS 进行设置,本次优化后的环境变量:(记得 source /etc/profile 使其生效)

export JAVA_HOME=/usr/local/java/jdk1.8.0_112

export JAVA_OPTS="-server -Xms1024m -Xmx3072m"

export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$CLASSPATH

export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH

export CATALINA_HOME=/opt/tomcat

export LD_LIBRARY_PATH=/usr/local/apr/lib

nginx:

nginx需要安装最新的稳定版,安装请参考之前的文章,因为我们tomcat会采用 Bio、Nio、Apr,所以需要升级openssl到更新版本,记得先装新版本的openssl(参考上面tomcat部分),在安装依赖库的时候 注意不要再安装 openssl 了!之前的这篇文章Ubuntu 中源码安装Nginx,好了 nginx 也装好了,其调优的配置文件:

worker_processes 2;# 系统有几个核心就设置为多少

events {

worker_connections 1024;

}

http {

include mime.types;

default_type application/octet-stream;

sendfile on;

tcp_nopush on;

keepalive_timeout 65;

gzip on;

gzip_vary on;

gzip_proxied any;

gzip_min_length 10240;

upstream servers {

server 127.0.0.1:8080 fail_timeout=0;

}

server {

listen 80;

server_name xxxxxx.com;

location ~ .*\.(gif|jpg|jpeg|png|ico|swf)$ {

root /opt/webapps/zjd/asset/static;

expires 30d;

}

location / {

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

proxy_set_header Host $http_host;

proxy_set_header X-Real-IP $remote_addr;

proxy_redirect off;

proxy_connect_timeout 240;

proxy_send_timeout 240;

proxy_read_timeout 240;

proxy_pass http://servers;

}

error_page 400 500 /opt/tomcat/webapps/zjd/asset/views/error.html;

}

}

项目打包上传就开始运行了,两核4G内存,完全无压力,内存最高才到 37%,cpu 就没上过15%。。。刚开始就这么大人同时砸(因为开始时间是定好了的,所以一开始的压力最大)后台数据:

代码上的反思:

改动很小的(基本上不改变)要使用缓存,开发时就要想到这点,架构上就引入缓存,或者部署上线前要对这块进行优化,重复读取是不可取的。

单一职责,本次上线后分析日志,发现有一个请求速度很慢,跟踪发现调用了后台管理员才会使用的复杂sql,而这是因为service层把该方法封装得太大,名字取得范围就很大,导致在用户端竟然调用了它(全部代码是我写的情况下都发生这种情况...团队开发的情况就可想而知)。

个人博客上代码布局更合理,地址:http://jovi.me/archives/1710-12211.html

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,569评论 4 363
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,499评论 1 294
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,271评论 0 244
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,087评论 0 209
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,474评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,670评论 1 222
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,911评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,636评论 0 202
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,397评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,607评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,093评论 1 261
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,418评论 2 254
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,074评论 3 237
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,092评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,865评论 0 196
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,726评论 2 276
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,627评论 2 270

推荐阅读更多精彩内容