day16_操做系统总体复习01

分析性能问题思路html

一、画出架构图前端

二、根据系统架构图—画出被测数据的业务流向图、问题必定在数据流向图节点里面java

 若是响应时间很长问题可能出如今哪里?mysql

网络:带宽有没有打满 、有没有丢包状况用命令查看  netstat  -i web

cpu:首先看哪一个进程占用cpu最高、java看进程下哪一个线程消耗最高的cpu、看线程执行什么操做。sql

cpu—sy:系统内核、cpu把它的时间片过多的消耗到系统内核调用上,系统内核调用常见的磁盘的io,因此要看磁盘的io是否高 。读写速度、看磁盘队列有没有排队。数据库

cpu—us:首先看哪一个进程占用cpu最高、java看进程下哪一个线程消耗最高的cpu、看线程执行什么操做。apache

内存:看used和free  看java进程仍是非java进程。后端

磁盘:Iostat  -dtomcat

st1:客户端或者负载机发送请求(负载机等待也要算响应时间)负载机。

t2:网络传输时间(网络)网络性能瓶颈。

t3:链接服务器的时间、寻找空闲链接池(web容器链接池)

t4:读取代码的时间—与硬件有关cpu进行调度、cpu调度应用程序执行、逻辑处理、判断。Cpu运行要取决于内存、内存开辟一块物理地址空间、cpu调度内存里的数据(代码逻辑)

t5:创建数据通道(数据库链接池)

t6:传送网络时间(网络)

t7:数据库sql执行时间(sql时间)

t8:网络通道返回(网络)

t9:链接池唤醒、链接恢复(web容器链接池)

t4:读取代码(代码逻辑)

t10:返回结果(网络)

怀疑性能瓶颈在数据库端?

一、首先看硬件

cpu—

负载—avg(过去1分钟、5分钟、15分钟)cpu正在调用的进程+正在等待的io进程之和。(负载高:正在调用的进程数过多或正在等待io的进程数过多)

io—数据库上问题一切揭io  读操做上由于读大于写, 磁盘读写—读:查询操做数据再也不内存里,从磁盘读到内存,写:先写内存,读和写都在内存里操做cpu在内存里干活,同步到磁盘。

网络—

web容器  tomcat   

一、工做模式

这三种模式的不一样之处以下:
  • BIO:
一个线程处理一个请求。缺点:并发量高时,线程数较多,浪费资源。
Tomcat7或如下,在Linux系统中默认使用这种方式。
  • NIO:
利用Java的异步IO处理,能够经过少许的线程处理大量的请求。
Tomcat8在Linux系统中默认使用这种方式。
Tomcat7必须修改Connector配置来启动:
<Connector port="8080" protocol="org.apache.coyote.http11.Http11NioProtocol" 
         connectionTimeout="20000" redirectPort="8443"/> 
  • APR:
即Apache Portable Runtime,从操做系统层面解决io阻塞问题。
Tomcat7或Tomcat8在Win7或以上的系统中启动默认使用这种方式。
Linux若是安装了apr和native,Tomcat直接启动就支持apr。(安装方法:http://www.cnblogs.com/nb-blog/p/5278502.html)
 
官方对这三种的区别的详细说明:
                  Java Blocking Connector   Java Nio Blocking Connector   APR/native Connector 
                             BIO                         NIO                       APR 
Classname                AjpProtocol               AjpNioProtocol           AjpAprProtocol 
Tomcat Version           3.x onwards                 7.x onwards              5.5.x onwards 
Support Polling              NO                          YES                       YES 
Polling Size                 N/A                   maxConnections             maxConnections 
Read Request Headers      Blocking                  Sim Blocking                   Blocking 
Read Request Body         Blocking                  Sim Blocking                   Blocking 
Write Response            Blocking                  Sim Blocking                   Blocking 
Wait for next Request     Blocking                  Non Blocking               Non Blocking 
Max Connections        maxConnections              maxConnections             maxConnections 
 Tomcat启动的时候,能够经过log看到Connector使用的是哪种运行模式:
  • Starting ProtocolHandler ["http-bio-8080"]
  • Starting ProtocolHandler ["http-nio-8080"]
  • Starting ProtocolHandler ["http-apr-8080"]

二、链接池—线程池是否会有排队、阻塞的状况,看看链接池是否用满。

三、长链接—keeplive、超时时间设置(sendtimeout、keeplivetimeout、connecttimeout)

四、静态资源的压缩

五、动静分离(前端有前端的东西、后端有后端的东西)

六、请求发数据库—数据库有数据库链接池—数据库链接池在代码里配置(应用程序到数据库的大小、数据库还会配置对外提供的链接池大小)在my.cnf 配置。

jmeter链接jdbc   ip、端口号、database、 要配置链接池大小、用户名、密码,其余应用程序也会配置这些值。

七、数据库链接池通常不会配置很大、漏斗原来,发不少请求到数据可能就不会那么多了。

八、怎么查看有几个链接ip链接数据库   数据库链接工具  tools—show—Processlist

九、如何评估多少台应用服务器—看线上流量使用多少流量、线上承受多少并发量和tps,测单机。

线上要承受10000万个并发,单机tps = 10  那就要10000/10 =1000台机器。

十、数据库 : 一主多从   、拆库分表。

十一、看看数据库链接池是否占满。

十二、是否看有没有慢查询—看慢查询日志,有没有慢sql,分析一下sql的执行计划explain,看看是否有优化空间。建议看“mysql高性能 第三版”。

相关文章
相关标签/搜索