根据架构图—画出请求数据流 —根据数据流经过的节点分析问题
负载机—经过网络传输到—应用服务器—跑服务—空闲中间件连接池(web请求连接池)_处理代码—通过网络把sql发送到—数据库连接池—请求发送到数据库服务器—数据库执行sql语句—将数据结果通过网络返回应用服务器—应用服务器对进程和线程唤醒—返回数据结果继续执行代码—将返回结果return—通过网络返回客户端
分析原因:
负载机(硬件)—网络—应用服务器(硬件)—数据库服务器(硬件)—web容器连接池—数据库连接池—sql执行过程—代码的业务逻辑。(java会有jc一说)
分析操作系统
操作系统三大件
1、cpu:Cpu对操作系统影响最大-逻辑判断处理计算
2、内存:cpu工作需要的数据存在这里,相当于闪存和缓存,电脑重启后数据就释放了,例如qq进程强制被杀死,释放一块址空间、如果在重新开启就开辟一块内存地址空间。
备注:非关 系型数据库nosql存在内存里Redis存放的key-value键值存储,内存比磁盘块很多。
如果发生内存满了、所以电脑卡了、重启就全部清空内存了。
3、磁盘:存储最终需要的数据永久存储、关系型数据库mysql、oracle数据存在磁盘里例如存一些报表,
回收站清空时-清理的是磁盘、360提示清理垃圾、垃圾数据在磁盘上(里面还包含缓存的数据实际不会那么大)。
Cpu对操作系统影响最大-Cpu计算、逻辑判断的数据都存在内存里例如cpu进行if(a>0)逻辑判断但是数据a来自于内存。
4、固态硬盘:分散的读写速度更快 ,存储数据。
5、机械硬盘:读写是一个通道一个通道比较慢,存储数据。
6、二级缓存:lev1和lev2在cpu和内存之间、比内存速度更快。但是二级缓存很贵,现在已经没人用
7、磁盘的io:磁盘的读和写操作
8、一切问题揭io:数据库一般读写存在这个问题
读: Sql的执行一条sql语句,从内存里读取速度比较快,如果数据不再内存从磁盘读取到内存里在供cpu使用
发生的原因
select查询数据—数据不再内存里,数据在磁盘里
1) 不是热点数据:热点数据就是缓存在内存里的数据-常规数据,数据里缓存。(内存不足)
2) Sql语句写的有问题例如select * 查询量很大。—全部从磁盘把数据搬家过来,读出来在进行判断过程会很长。
写:数据库语句insert写入到内存,这条sql就完成了,内存会自动同步到磁盘,再从内存放到磁盘上去。磁盘同步速度不够快时,如果重新启动数据,数据就丢失了。
总结:cpu利用率—磁盘io读写的大小—Cpu利用率或者Cpu使用率是多少
指标
9、cpu利用率:时间片里面供应用程序工作的时间片+系统调度的时间片之和/总时间
top 命令查看cpu使用情况