性能问题定位和基本优化学习笔记

操作系统

性能问题定位和基本优化学习笔记

  • us列显示了用户进程消耗CPU的时间百分比。us的值比较高时,说明用户进程消耗的CPU时间多,这是主要观察的项
  • sy列显示了内核进程消耗CPU的时间百分比。sy的值比较高时,就说明内核消耗的CPU时间多;如果us+sy超过80%,就说明CPU的资源存在不足,若服务器的sy较高,持续超过20%,说明可能是WebContainer上下文切换过多,需要进行优化
  • wa列表示IO等待所占的CPU时间百分比。wa值越高,说明IO等待越严重。如果wa值超过20%,说明IO等待严重

iostat -dm 2 30

性能问题定位和基本优化学习笔记
MB_read/s表示每秒磁盘读取的字节数,MB_wrtn/s表示每秒磁盘写入的字节数

sar -n DEV 2 30

性能问题定位和基本优化学习笔记

free

性能问题定位和基本优化学习笔记
不能超过total总量的80%

Nmon

性能问题定位和基本优化学习笔记

jatack -l pid >thread_1.log

  • 死锁,Deadlock(重点关注)
  • 执行中,Runnable
  • 等待资源,Waiting on condition(重点关注)
  • 等待获取监视器,Waiting on monitor entry(重点关注)
  • 暂停,Suspended
  • 对象等待中,Object.wait() 或 TIMED_WAITING
  • 阻塞,Blocked(重点关注)
  • 停止,Parked

Oracle

-AWA查看top sql语句执行情况、命中率,

Mysql

--开启慢查询,使用执行计划查看语句情况

调整内核参数

vi /etc/sysctl.conf

net.ipv4.tcp_max_syn_backlog = 65536
net.core.somaxconn = 32768

net.core.wmem_default = 8388608
net.core.rmem_default = 8388608
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216

net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_tw_reuse = 1

net.ipv4.ip_local_port_range = 1024 65000

fs.file-max = 65536

使设置生效:
#sysctl -p

调整文件描述符限制

vi /etc/security/limits.conf

  • soft nofile 65536
  • hard nofile 65536
  • soft nproc 65536
  • hard nproc 65536

jDK1.6

-Xmx4000M -Xms4000M -Xmn600M -XX:PermSize=800M -XX:MaxPermSize=800M -Xss256K -XX:+DisableExplicitGC -Xverify:none -XX:SurvivorRatio=2 -XX:+UnlockDiagnosticVMOptions -XX:TargetSurvivorRatio=90 -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:+CMSParallelRemarkEnabled -XX:+UseCMSCompactAtFullCollection -XX:CMSFullGCsBeforeCompaction=0 -XX:+CMSClassUnloadingEnabled -XX:LargePageSizeInBytes=128M -XX:+UseFastAccessorMethods -XX:+UseCMSInitiatingOccupancyOnly -XX:CMSInitiatingOccupancyFraction=60 -XX:+ParallelRefProcEnabled -XX:SoftRefLRUPolicyMSPerMB=0 -XX:+AlwaysPreTouch

1.7

-Xms3G -Xmx3G -XX:PermSize=512m -XX:+UseG1GC -XX:MaxGCPauseMillis=300 -XX:ParallelGCThreads=2 -XX:ConcGCThreads=2 -XX:InitiatingHeapOccupancyPercent=70

Tomcat server.xml

<Connector port="8090" protocol="org.apache.coyote.http11.Http11NioProtocol"
maxThreads="300" minSpareThreads="25"
enableLookups="false" disableUploadTimeout="true"
acceptCount="300" connectionTimeout="20000"
compression="on" compressionMinSize="2048"
compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain“
redirectPort="8443" URIEncoding="UTF-8"/>

Mysq具体分析内容解释

  1. max_connections:允许客户端并发连接的最大数量,默认值是151,一般将该参数设置为500-2000
  2. back_log:MySQL服务器连接请求队列所能处理的最大连接请求数
  3. binlog_cache_size:在事务中二进制日志使用的缓存大小。如果MySQL服务器支持所有的存储引擎且启用二进制日志,每个客户端都会被分配一个二进制日志缓存。如果数据库中有很多大的事务,增大这个缓存可以获得更好的性能
  4. binlog_stmt_cache_size:这个参数决定二进制日志处理非事务性语句的缓存。如果MySQL服务支持任何事务性的存储引擎且开启了二进制日志,每个客户端连接都会被分配二进制日志事务和语句缓存。如果数据库中经常运行大的事务,增加这个缓存可以获得更好的性能
  5. table_open_cache:所有线程能打开的表的数量
  6. thread_cache_size:MySQL服务缓存以重用的线程数。当客户端断开连接的时候,如果线程缓存没有使用满,则客户端的线程被放入缓存中。如果有客户端断开连接后再次连接到MySQL服务且线程在缓存中,则MySQL服务会优先使用缓存中的线程;如果线程缓存没有这些线程,则MySQL服务器会创建新的线程。如果数据库有很多的新连接,可以增加这个参数来提升性能
  7. query_cache_size:为查询结果所分配的缓存。默认这个参数是没有开启的。这个参数的值应设为整数的1024倍
  8. query_cache_type:设置查询缓存的类型。当这个参数为0或OFF时,则MySQL服务器不会启用查询缓存;当这个参数为1或ON时,则MySQL服务器会缓存所有查询结果(除了带有SELECT SQL_NO_CACHE的语句);当这个参数为2或DEMAND时,则MySQL服务器只会缓存带有SELECT SQL_CACHE的语句
  9. sort_buffer_size:每个会话执行排序操作所分配的内存大小
  10. join_buffer_size:MySQL服务器用来作普通索引扫描、范围索引扫描和不使用索引而执行全表扫描这些操作所用的缓存大小
  11. max_allowed_packet:网络传输时单个数据包的大小
  12. innodb_buffer_pool_size:InnDB存储引擎缓存表和索引数据所使用的内存大小。默认值是128MB。在以InnDB存储引擎为主的系统中,可以将这个参数设为机器物理内存的80%
  13. innodb_buffer_pool_instances:InnoDB缓存池被分成的区域数。对于1GB以上大的InnoDB缓存,将缓存分成多个部分可以提高MySQL服务的并发性,减少不同线程读缓存页的读写竞争
  14. innodb_max_dirty_pages_pct:当Innodb缓存池中脏页所占的百分比达到这个参数的值时,InnoDB会从缓存中向磁盘写入数据。默认值是75
  15. innodb_thread_concurrency:InnoDB存储引擎可以并发使用的最大线程数。当InnoDB使用的线程超过这参数的值时,后面的线程会进入等待状态,以先进先出的算法来处理。等待锁的线程不计入这个参数的值。这个参数的范围是0~1000。默认值是0。当这个参数为0时,代表InnoDB线程的并发数没有限制
  16. innodb_log_buffer_size:InnoDB写入磁盘日志文件所使用的缓存字节大小。如果innodb_page_size参数为32K,则默认值是8MB;如果innodb_page_size参数为64K,则默认值是16MB。如果日志的缓存设置较大,则MySQL在处理大事务时,在提交事务前无需向磁盘写入日志文件。建议设置此参数为4~8MB
  17. innodb_lock_wait_timeout:InnDB事务等待行锁的时间长度。默认值是50秒。当一个事务锁定了一行,这时另外一个事务想访问并修改这一行,当等待时间达到innodb_lock_wait_timeout参数设置的值时,MySQL会报错“ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction”,同时会回滚语句(不是回滚整个事务)

判断类别

性能问题定位和基本优化学习笔记

常见类型

性能问题定位和基本优化学习笔记

性能测试报告关键图样

性能问题定位和基本优化学习笔记

监控透明

性能问题定位和基本优化学习笔记
#性能分析过程
性能问题定位和基本优化学习笔记

Web前端性能优化常用方法

  1. 减少http请求
  2. – 使用浏览器缓存
  3. – 启动压缩
  4. – 图片优化
  5. – CSS放在页面最前面, JS在页面下面

    mysql慢查询优化案例

    性能问题定位和基本优化学习笔记

    CPU、内存、IO之间的关系

    性能问题定位和基本优化学习笔记

猜你喜欢

转载自blog.51cto.com/357712148/2165812