应用级调优

以下优化仅供参考,具体根据实际情况来定。(误犯

应用级调优

nginx的调优

可以使用源码编译安装,需要什么装什么

CPU的亲和性

nginx工作进程数,可根据cpu核数调整

[root@localhost ~]# vim /etc/nginx/nginx.conf
worker_processes  8;   根据cpu核数定

因为8个进程不一定平均分配,所以可以通过为nginx分配指定CPU亲和性来分配进程到核中。

[root@localhost ~]# vim /etc/nginx/nginx.conf
worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000;

补充:  调整单个nginx进程的最大值
worker_rlimit_nofile 10240;			//此处可与下列文件描述符中的增加用户级的值保持一致
文件描述符

查看用户级限制

-bash-4.2$ ulimit  -n		//nginx用户
1024

增加用户级限制
[root@localhost ~]# ulimit  -SHn  10240   //临时生效
vim /etc/
[root@localhost ~]# vim /etc/security/limits.conf
添加
nginx hard nofile 10240
nginx soft nofile 10240			//永久有效,重启服务器生效

查看系统级限制

[root@localhost ~]# sysctl -a |grep file
fs.file-max = 95086
或
[root@localhost ~]# cat /proc/sys/fs/file-max

增大系统级限制
[root@localhost ~]# vim /etc/sysctl.conf
fs.file-max = 102400   //添加这一句,指定值,根据自己的情况来定
保存后使用sysctl  -p  生效
连接数
[root@localhost ~]# vim /etc/nginx/nginx.conf
worker_connections 65535;	//设置一个worker进程可同时打开的最大连接数,与端口数有关
Nginx事件处理模型(IO模型)
[root@localhost ~]# vim /etc/nginx/nginx.conf
events {
use epoll; epoll为一种高性能的I/O模型
worker_connections 65535;
}

如果想详细了解epoll请教度娘
gzip压缩
在配置文件中开启gzip on  //使用gzip压缩功能,可以为我们节约带宽,加快传输效率,但同时也会消耗CPU资源
其他参数
使用sendfile传输文件,普通应用设为on,下载等IO重负荷的应用设为off,因为大文件不适合放buffer中
sendfile  on

sendfile为on时,这里也应该设为on,数据包会累积一下再一起传输,可以提高传输效率
tcp_nopush on

晓得数据包不等待直接传输,和tcp_nopush相反,但同时设置为on时nginx会平衡这两个功能
tcp_nodelay on

长链接的超时时间
keepalive_timeout  65

另外客户端上传文件的最大值,如一些视频类网站,需要上传视频,就可以注意这个值的大小
client_max_body_size 100m

php-fpm调优

[root@localhost ~]# vim /etc/php-fpm.d/www.conf
pm = dynamic 对于专用服务器,pm可以设置为static。如果选择static,则由
pm.max_children指定固定的子进程数。如果选择dynamic,则可以动态调整下面几个参数
pm.max_children = 64 子进程最大数,我这里只是参考值(看系统资源决定,视实际环境测
试后调整,下几个参数也一样)
pm.start_servers = 20 启动时默认启动的进程数
pm.min_spare_servers = 5 保证空闲进程数最小值,如果空闲进程小于此值,则创建新的子进
程 pm
.max_spare_servers = 10 保证空闲进程数最大值,如果空闲进程大于此值,此进行清理
rlimit_files = 65535 打开的文件描述符数量,不能大于系统的限制(系统可以使用
ulimit命令查看和设置)

tomcat的调优

此文件仅供参考,参数等根据自己服务器的情况而定

启动内存优化

tomcat启动时JVM会分配一个初始内存和最大内存

[root@localhost ~]# lsof -i:8080
COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
java    27938 root   53u  IPv6 541608      0t0  TCP *:webcache (LISTEN)

[root@localhost ~]# /usr/local/jdk1.8.0_191/bin/jmap -heap 27938(上面的PID)
MaxHeapSize              = 255852544 (244.0MB)

修改catalina.sh文件,再次重启
[root@localhost ~]# vim /usr/local/tomcat/bin/catalina.sh
JAVA_OPTS='-Xms244m -Xmx1024m 
-Xms244m JVM初始化的大小,-Xmx1024m JVM最大值 (具体根据自己服务器配置)
禁用AJP
[root@localhost ~]# vim /usr/local/tomcat/conf/server.xml
    <!-- Define an AJP 1.3 Connector on port 8009 -->
    <!--Connector port="8009" protocol="AJP/1.3" redirectPort="8443" --/>
找到8009端口这俩行注释
重启tomcat,就没有8009了
IO优化

tomcat中一共有四种模式:BIO、AIO、NIO、APR

  • BIO,同步阻塞式IO,一个请求占一个线程
  • NIO,同步非阻塞IO,一个线程处理多个请求
  • AIO(也叫NIO2),异步非阻塞IO,一个线程更高效处理多个请求
  • APR, 通过操作系统级别来解决异步IO问题,可大大提高tomcat性能。需要编译配置.

Tomcat8以上版本,默认使用的是NIO模式

换成apr的步骤

1、下载apr与apr-util软件包

官方下载地址:https://mirrors.cnnic.cn/apache/apr/

2、解压并编译安装apr

[root@localhost ~]# tar xf apr-1.6.5.tar.bz2 -C /usr/local/
[root@localhost ~]# tar xf apr-util-1.6.1.tar.bz2 -C /usr/local/
[root@localhost ~]# cd /usr/local/apr-1.6.5/
[root@localhost ~]# ./configure --prefix=/usr/local/apr && make && make install

3、解压并安装apr-util,需要指定apr的路径进行联系

[root@localhost ~]# yum install expat-devel -y
[root@localhost ~]# cd /usr/local/apr-util-1.6.1/
[root@localhost ~]# ./configure --with-apr=/usr/local/apr
[root@localhost ~]# make
[root@localhost ~]# make install

4、加入环境变量

[root@localhost ~]# vim /etc/profile
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/apr/lib
[root@localhost ~]# source /etc/profile

5、在tomcat9的bin目录中编译tomcat-native (没有包的话需要下载,默认就有)

[root@localhost ~]# cd /usr/local/tomcat/bin/
[root@localhost ~]# tar xf tomcat-native.tar.gz
[root@localhost ~]# cd tomcat-native-1.2.19-src/native/
[root@localhost ~]# ./configure --with-apr=/usr/local/apr --with-java home=/usr/local/jdk1.8.0_191/ && make && make install

6、修改配置文件

[root@localhost ~]# vim /usr/local/tomcat/conf/server.xml
<Connector port="8080" protocol="org.apache.coyote.http11.Http11AprProtocol"
			connectionTimeout="20000"
			redirectPort="8443" /> 
把protocol="HTTP/1.1" 改为protocol="org.apache.coyote.http11.Http11AprProtocol"

7, 重启tomcat

[root@localhost ~]# /usr/local/tomcat/bin/shutdown.sh
[root@localhost ~]# /usr/local/tomcat/bin/startup.sh

查看/usr/local/tomcat/logs/catalina.out 日志是否有http-apr
线程池

在tomcat中每一个用户请求都是一个线程,所以可以使用线程池提高性能
maxThreads: 可以处理的最大并发请求数,默认150
minSpareThreads: 线程始终保持运行的最小数量,也是初始化的线程数,默认4
acceptCount: tomcat维护最大的队列数(所有线程在使用,就会放入队列中,队列满了,新的请求则不处理)

[root@localhost ~]#  vim /usr/local/tomcat/conf/server.xml
找到以下这段,打开注释,并调大maxThreads与minSpareThreads

	<Executor name="tomcatThreadPool" namePrefix="catalina-exec-"
		maxThreads="500" minSpareThreads="50"/>
注释原来的connector
	<!--
	<Connector port="8080"		protocol="org.apache.coyote.http11.Http11AprProtocol"
		connectionTimeout="20000"
		redirectPort="8443" />
	-->
打开Connector executor配置段,并指定为tomcatThreadPool,协议也改为apr
	<Connector executor="tomcatThreadPool"
		port="8080" protocol="org.apache.coyote.http11.Http11AprProtocol"
		connectionTimeout="20000"
		acceptCount="100"
		redirectPort="8443" />

以上优化仅供参考,具体根据实际情况来定。(误犯

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

柒哥fu.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值