性能优化(二)Ubuntu内核、Tomcat优化

内核优化:

网络

tee -a /etc/sysctl.conf <<'EOF'
# 调整提升服务器负载能力之外,还能够防御小流量的Dos、CC和SYN攻击
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_tw_reuse = 1
# net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_fin_timeout = 60
net.ipv4.tcp_synack_retries = 1
net.ipv4.tcp_syn_retries = 1
net.ipv4.tcp_fastopen = 3


# 优化TCP的可使用端口范围及提升服务器并发能力(注意一般流量小的服务器上没必要设置如下参数)
net.ipv4.tcp_keepalive_time = 1200
net.ipv4.tcp_max_syn_backlog = 8192
net.ipv4.tcp_max_tw_buckets = 5000
net.ipv4.ip_local_port_range = 1024 65535


# 优化核套接字TCP的缓存区
net.core.netdev_max_backlog = 8192
net.core.somaxconn = 8192
net.core.rmem_max = 12582912
net.core.rmem_default = 6291456
net.core.wmem_max = 12582912
net.core.wmem_default = 6291456
EOF
#配置生效
/sbin/sysctl -p /etc/sysctl.conf
/sbin/sysctl -w net.ipv4.route.flush=1

最大进程数和最大文件打开数

echo "ulimit -HSn 65535" >> /etc/rc.local
echo "ulimit -HSn 65535" >>/root/.bash_profile
echo "ulimit -SHn 65535" >> /etc/profile
ulimit -SHn 65535
tee -a /etc/security/limits.conf <<'EOF'
# ulimit -HSn 65535
# ulimit -HSu 65535
*  soft  nofile  65535
*  hard  nofile  65535
*  soft  nproc   65535
*  hard  nproc   65535
EOF

Tomcat调优:

** JAVA_OPTS **

-server: 启用jdk的server版,一定要作为第一个参数,在多个CPU时性能佳
-Xms: 初始Heap大小,使用的最小内存,cpu性能高时此值应设的大一些
-Xmx: java heap最大值,使用的最大内存,上面两个值是分配JVM的最小和最大内存,取决于硬件物理内存的大小,建议均设为物理内存的一半。 -Xms与-Xmx设成一样的值,避免JVM因为频繁的GC导致性能大起大落
-XX:PermSize:设定内存的永久保存区域
-XX:MaxPermSize:设定最大内存的永久保存区域
-XX:MaxNewSize:
-Xss 15120 这使得JBoss每增加一个线程(thread)就会立即消耗15M内存,而最佳值应该是128K,默认值好像是512k.
+XX:AggressiveHeap 会使得 Xms没有意义。这个参数让jvm忽略Xmx参数,疯狂地吃完一个G物理内存,再吃尽一个G的swap。
-Xss:每个线程的Stack大小
-verbose:gc 现实垃圾收集信息
-Xloggc:gc.log 指定垃圾收集日志文件
-Xmn:young generation的heap大小,一般设置为Xmx的3、4分之一
-XX:+UseParNewGC :缩短minor收集的时间
-XX:+UseConcMarkSweepGC :缩短major收集的时间 提示:此选项在Heap Size 比较大而且Major收集时间较长的情况下使用更合适。

Linux下修改TOMCAT_HOME/bin/catalina.sh
JAVA_OPTS="-server -XX:PermSize=512M -XX:MaxPermSize=1024m -Xms2048m -Xmx2048m
windows下修改TOMCAT_HOME/bin/catalina.bat
set JAVA_OPTS=-server -XX:PermSize=512M -XX:MaxPermSize=1024m -Xms2048m -Xmx2048m

堆内存设置:

-Xms 初始堆大小。如:-Xms256m或2G,默认为物理内存1/64。

-Xmx 最大堆大小。如:-Xmx512m或2G,默认为物理内存1/4。

非堆内存设置:

-XX:PermSize 永久代(方法区)的初始大小,默认为物理内存1/64。

-XX:MaxPermSize 永久代(方法区)的最大值,默认为物理内存1/4。
并发调优
Tomcat配置文件conf/server.xml 中的Connector配置中

连接相关参数
  • acceptCount:允许的最大连接数
  • enableLookups:是否反查域名,取值为: true 或 false 。为了提高处理能力,应设置为 false
  • connectionTimeout:网络连接超时,单位:毫秒。设置为 0 表示永不超时,这样设置有隐患的。通常可设置为 30000 毫秒。
连接器connector的并发处理能力
  • maxThreads 客户请求最大线程数,要根据自己的实际情况合理设置,设置越大会耗费内存和 CPU,因为 CPU 疲于线程上下文切换,没有精力提供请求服务了
  • minSpareThreads Tomcat初始化时创建的 socket 线程数
  • maxSpareThreads Tomcat连接器的最大空闲 socket 线程数(少)
  • enableLookups 若设为true, 则支持域名解析,可把 ip 地址解析为主机名
  • redirectPort 在需要基于安全通道的场合,把客户请求转发到基于SSL 的 redirectPort 端口
  • acceptAccount 监听端口队列最大数,满了之后客户请求会被拒绝(不能小于maxSpareThreads)
  • connectionTimeout 连接超时
  • URIEncoding URL统一编码
缓存优化
  • compression 打开压缩功能
  • compressionMinSize 启用压缩的输出内容大小,这里面默认为2KB
  • compressableMimeType 压缩类型
  • connectionTimeout 定义建立客户连接超时的时间. 如果为 -1, 表示不限制建立客户连接的时间
<!-- 调优之前的配置 tomcat默认配置
    <Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" URIEncoding="UTF-8"/>
	-->
<!-- 调优之后的配置 -->
    <Connector  port="9027" 
              maxHttpHeaderSize="8192"
              maxThreads="2048"
              minSpareThreads="256"
              enableLookups="false"
              compression="on"
              compressionMinSize="2048"
              compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain"
              connectionTimeout="20000"
              URIEncoding="utf-8"
              acceptCount="2048"
              redirectPort="8443"
              disableUploadTimeout="true"
              executor="tomcatThreadPool" />

      <Executor name="tomcatThreadPool" 
                namePrefix="catalina-exec-" 
                maxThreads="2048" 
                minSpareThreads="512" 
                prestartminSpareThreads="true" />

注:带宽问题,提升带宽;sql问题,慢sql排查+索引;缓存中间件ehcache

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Ubuntu是一个广泛使用的开源操作系统,它的内核基于Linux。Ubuntu内核开发是指对Ubuntu操作系统内核进行开发和优化的过程。 内核是操作系统的核心部分,负责管理计算机的硬件资源和处理各种系统任务。Ubuntu内核开发旨在提升系统的性能、安全性和稳定性。它涉及到诸多方面的工作,包括代码编写、功能修改、错误修复等。 内核开发者首先需要熟悉Linux内核的结构和工作原理。他们需要了解各个功能模块的作用和相互关系,如进程管理、内存管理、文件系统等。他们还需要了解硬件平台的特性,以便针对不同的硬件环境进行优化。 在Ubuntu内核开发过程中,开发者通常会参与内核社区的讨论,并参与到代码的编写和修改中。他们可以提交补丁和提出功能改进建议,以改进Ubuntu内核的性能和功能。开发者还需要对代码进行测试,以确保修改不会引入新的错误。 此外,Ubuntu内核开发还包括持续的安全更新和错误修复。开发者需要不断跟踪最新的安全漏洞和错误报告,并及时发布补丁和更新。他们还需要与其他内核开发者合作,处理用户的反馈和需求。 总之,Ubuntu内核开发是一个复杂而庞大的工程,需要开发者具备深入的操作系统和硬件知识。通过不断的优化和改进,Ubuntu内核可以为用户提供更好的使用体验和系统性能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值