【Means】Linux优化以及应用优化

news/2025/3/26 12:42:15/

文章目录

  • 一、Linux优化
    • 1. cpu优化
    • 2. 内存优化
    • 3. 网卡优化
    • 4. 磁盘优化
    • 5. 内核优化
  • 二、应用优化
    • 1. nginx 优化
      • 1.1 软件优化
      • 1.2 系统内核优化
    • 2. tomcat 优化
      • 2.1 配置文件优化
      • 2.2 系统内核优化
      • 2.3 JVM 优化
    • 3. redis 优化
    • 4. mysql 优化


一、Linux优化

1. cpu优化

性能指标工具说明
平均负载uptime
top
uptime是用最简单
top提供了更安全的指标
系统整体 CPU 使用率vmstat
mpstat
top
sar
/proc/stat
top、vmstat、mpstat只可以动态查看
而 sar 还可以记录历史数据
/proc/stat 是其他性能工具数据来源
进程 CPU 使用率top
pidstat
ps
htop
atop
top 和 ps 可以按 CPU 使用率给进程排序 ,
而 pidstat 只显示实际用了 CPU 的进程
htop 和 atop 以不同颜色显示更直观
系统上下文切换vmstat除了上下文切换次数还提供运行状态和不可中断状态进程的数量
进程上下文切换pidstat使用时注意加上 -w 选项
软中断top
/proc/soxirqs
mpstat
top 提供软中断 CPU 使用率
而 /proc/soxirqs 和 mpstat 提供了各种软中断在每个 CPU 上的
运行次数
硬中断vmstat
/proc/interrupts
vmstat 提供了总的中断次数
而 /proc/interrupts 提供了各种中断在每个 CPU 上的积累次数
CPU 个数/proc/cpuinfo
lscpu
lscpu 更直观查看
事件剖析pref
execsnoop
perf 可以用来分析 CPU 的缓存及内核调用链
execsnoop 用来监控短时进程

2. 内存优化

增加内存条或者更换内存条。

3. 网卡优化

使用光口、百兆网卡、千兆网卡等等进行硬件优化。

4. 磁盘优化

使用固态硬盘进行硬件优化。

5. 内核优化

升级服务器内核版本进行优化。

二、应用优化

1. nginx 优化

1.1 软件优化

优化内容设置方式
隐藏版本号server_tokens off;
设置运行用户/组方法一:配置文件中修改user 用户组 组名;
方法二:编译时直接设置
页面缓存时间expires 时间;
连接保持超时keepalive_timeout 服务器超时时间 [客户端超时时间];
设置工作进程数worker_processes auto/同CPU数量 ;
worker_cpu_affinity 绑核
设置并发worker_rlimit_nofile
worker_connections
网页压缩gzip on;
防盗链rewrite
IO模型 IO多路复用events { use epoll; }

1.2 系统内核优化

文件设置方式
/etc/security/limits.conf* soft nofile 65535 打开文件数
* hard nofile 65535
* soft nproc 65535 打开进程数
* hard nproc 65535
* soft memlock unlimited 内存锁定不限制
* hard memlock unlimited
/etc/sysctl.confnet.ipv4.tcp_syncookies =1 开启SYNCookies
net.ipv4.tcp_tw_reuse = 1 允许将TIME-WAIT sockets重新用于新的TCP连接,
net.ipv4.tcp_tw_recycle = 1 开启TCP连接中TIME-WAIT sockets的快速回收
net.ipv4.tcp_fin_timeout = 30 修改系统默认的fin TIMEOUT 时间

net.ipv4.ip_local_port_range = 1024 65000 外向连接的端口范围
net.ipv4.tcp_syn_retries = 2
net.ipv4.tcp_max_syn_backlog = 262144
net.ipv4.tcp_keepalive_time = 600

2. tomcat 优化

2.1 配置文件优化

maxThreads(最大线程数

  Tomcat使用线程来处理接收的每个请求,这个值表示Tomcat可创建的最大的线程数,即支持的最大并发连接数,默认值是 200。

acceptCount(等待队列数

  指定当所有可以使用的处理请求的线程数都被使用时,可传入连接请求的最大队列长度,超过这个数的请求将不予处理,默认为 100 个。

processorCache(进程缓冲)

  进程缓冲器,可以提升并发请求。默认值是200,如果不做限制的话可以设置为-1,一般采用maxThreads的值或者-1。

enableLookups (关闭DNS反向解析)

  是否反查域名,以返回远程主机的主机名,取值为:true 或 false,如果设置为 false,则直接返回 IP 地址,为了提高处理能力,应设置为 false。

URIEncoding(设置字符集编码为UTF-8)

  指定 Tomcat 容器的 URL 编码格式,网站一般采用UTF-8作为默认编码。

maxKeepAliveRequests(连接保持最大请求数)

  指定一个长连接的最大请求数。默认长连接是打开的,设置为1时,代表关闭长连接;为-1时,代表请求数无限制。

connnectionTimeout(连接超时时间)

  网络连接超时,单位:毫秒,设置为 0 表示永不超时,这样设置有隐患的。通常默认 20000 毫秒就可以。

compression(开启网页压缩)

  是否对响应的数据进行GZIP压缩,off:表示禁止压缩;on:表示允许压缩(文本将被压缩)、force:表示所有情况下都进行压缩,默认值为 off,压缩数据后可以有效的减少页面的大小,一般可以减小 1/3 左右,节省带宽。

2.2 系统内核优化

文件参数
/etc/security/limits.confnofile (打开文件数)
nproc (打开进程数)
memlock(最大锁定内存地址空间)
rss(最大持久设置大小)
/etc/sysctl/conf(网卡优化)net.ipv4.tcp tw recycle = 1(开启TCP连接中TIME-WAIT sockets的快速回收)
net.ipv4.tcp tw reuse = 1(允许将TIME-WAIT sockets重新用于新的TCP连接)
net.ipv4.ip_local_port_range = 1024 65000 (外向连接的端口范围)

2.3 JVM 优化

JVM优化主要是在catalina.sh文件中添加JAVA_OPTS参数,以及做相关配置参数

vim /usr/local/tomcat/bin/catalina.sh
......
JAVA_OPTS="$JAVA_OPTS -server -Xms2048m -Xmx2048m -Xmn768m -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/usr/local/tomcat/temp/oom.hprof -XX:ParallelGCThreads=2 -XX:PermSize=1024m -XX:MaxPermSize=1024m -Djava.awt.headless=true -XX:+DisableExplicitGC" cygwin=false

参数含义:

-server实现在多核服务器性能更佳
-Xms2048m -Xmx2048m  设置堆内存初始值和堆内存最大值一样大,一般为物理内存的1/2
-XX:PermSize=1024m -XX:MaxPermSize=1024m 设置非堆内存初始值和非堆内存最大值一样大,一般为物理内存的1/4,可以减少推内存和非堆内存经常发座徘缩波动,影幅系统确威对间前
-XX:ParallelGCThreads=2 设置并行垃圾回收线程数,提高垃圾回收效率.当 CPU 数量小于8,此值建议配置等于 CPU 数量。
-XX:+HeapDumpOnOutOfMemoryError   表示当JVM发生OOM时,自动生成DUMP文件
-XX:HeapDumpPath=/usr/local/tomcat/temp/oom.hprof   表示生成DUMP文件的路径
-XX:+DisableExplicitGC  禁止调用System.gc(),防止误调用gc方法导致系统的JVM大起大落而使系统响应时间严重降低

3. redis 优化

优化方式 优化设置
性能优化 设置 config set activedefrage yes 开启内存自动清理。
定时执行 memory purge 清理内存片
合理设置 maxclient 最大连接数参数(10000),tcp-backlog 连接排队数(1024), timeout 连接超时时间(30000)
设置 内存数据淘汰策略 maxmemory-policy 实现保证内存使用率不超过最大内存大小
设置 key 的过期时间,精简 键名和键值,及控制键值的大小
尽可能使用 Hash 数据类型存储数据,因为 Hash 类型的一个键包含多个字段,该类型的数据占用空间较小
安全优化 设置 AOF 持久化 和 主从复制 备份数据库,采用 哨兵 或者 集群 模式实现高可用。
设置 config set requirepass 开启密码验证

4. mysql 优化

优化方式 优化设置
软优化 查询语句优化,使用expalin或者descrbe
优化子查询,尽量使用join来代替子查询
使用索引,其中使用索引的三大注意事项:
LIKE关键字匹配'%'开头的字符串,不会使用索引;
OR关键字的两个字段必须都是用了索引,该查询才会使用索引;
使用多列索引必须满足最左匹配。
对于字段较多的表,如果某些字段使用频率较低,此时应当,将其分离出来从而形成新的表
对于将大量连接查询的表可以创建中间表,从而减少在查询时造成的连接耗时
类似于创建中间表,增加冗余也是为了减少连接查询
使用分析表、检查表、优化表
分析表: 使用 ANALYZE 关键字,如 ANALYZE TABLE user;
检查表: 使用 CHECK关键字,如 CHECK TABLE user [option]
优化表:使用OPTIMIZE关键字,如 OPTIMIZE [LOCAL|NO_WRITE_TO_BINLOG] TABLE user;

http://www.ppmy.cn/news/646419.html

相关文章

投资微信

花荣 http://weibo.com/hjhh 股民老张 http://weibo.com/u/1905617941天狼50邓育平 http://weibo.com/bmc777熊市猎人 http://weibo.com/u/1690076015Marco_徐晓峰 http://weibo.com/210109038投资舆情 http://weibo.com/u/1888116862-智鹰 http://w…

微信WeUI扩展组件

主要包括 下拉刷新pullToRefresh downRefresh.html 主要的代码是$(document.body).pullToRefresh(); <div class"weui-pull-to-refresh__layer"><div classweui-pull-to-refresh__arrow></div><div classweui-pull-to-refresh__preloader>&l…

微信小程序视频

1.视频播放器 微信已经封装的非常好.我这里只用了很简单的几个属性 由于以前没做过弹幕,看到danmu-list就激动了.而且只需要将弹幕内容加入集合即可. 弹幕列表的元素: { text: ‘第 1s 出现的红色弹幕’,//文本 color: ‘#ff0000’,//颜色 time: 1//发送的时间 } 其他的属…

微信运营工具

图文排版编辑器 ●秀米&#xff1a;xiumi.us ●易点编辑器&#xff1a;wxedit.yead.net ●135微信编辑器&#xff1a;http://www.135editor.com/ ●扔赞微信编辑器&#xff1a;http://bianji.rengzan.com/ ●小易微信编辑器&#xff1a;http://xiaoyi.e7wei.com/ ●易点微信编辑…

微信小程序踩坑集合

1:官方工具:https://mp.weixin.qq.com/debug/w ... tml?t=1476434678461 2:简易教程:https://mp.weixin.qq.com/debug/wxadoc/dev/?t=1476434677599 3:设计指南:https://mp.weixin.qq.com/debug/wxadoc/design/index.html 4:设计资源下载:https://mp.weixin.qq.com/d…

微信小程序资源集合

1&#xff1a;官方工具&#xff1a;https://mp.weixin.qq.com/debug/w ... tml?t1476434678461 2&#xff1a;简易教程&#xff1a;https://mp.weixin.qq.com/debug/wxadoc/dev/?t1476434677599 3&#xff1a;设计指南&#xff1a;https://mp.weixin.qq.com/debug/wxadoc/des…

微信小程序版狼人杀+服务端系列(1)

本系列主要讲利用微信小程序完整实现狼人杀游戏&#xff0c;慢慢跟进 关于狼人杀的游戏规则&#xff0c;就懒得赘述了&#xff0c;请自行百度。以下正文开始 创建房间以及加入房间创建房间逻辑加入房间逻辑 后续更改界面什么 创建房间效果图 以下实现逻辑&#xff0c;首先具…

微信浏览器是什么内核,以及它的兼容性。

微信浏览器内核-------QQ浏览器X5内核 也就是说微信、手机QQ内置浏览器都是腾讯的QQ浏览器。 X5内核是腾讯基于开源Webkit优化的浏览器渲染引擎&#xff0c;目前除了微信、手机QQ、京东等有30多款APP内置浏览器都是基于X5内核。 如何查看&#xff1a;进入微信进入朋友圈或者公…