前言
面试官经常会问平时访问正常的网页突然变慢是什么原因引起的,说明下你排查的思路;我认为这种问题很能考察一个人的综合知识面,既能融通的贯彻知识点,也能展看对每个知识点进行详细的考问。
下面我按我自己理解的思路来整理下(若有补充请留言)
1、是否服务器的出口的带宽不够,可能突然访问量过大,并发比较高造成带宽不够用
2、如果你平时浏览正常的web加载不出来,稍微等会看看是不是出现类似404、502等这种错误大体可以判断是哪个位置出现了错误
404:(未找到) 服务器找不到请求的网页;看下服务端路径是否正确或存放web的文件是否被删除等
502 :(错误网关) 服务器作为网关或代理,从上游服务器收到无效响应;用ping看下能不能ping通服务器
(https://blog.csdn.net/github_38524608/article/details/79127386)
3、若没有明显的报错或者就是慢用tarcert命令查看下哪个节点是否有问题
4、如果网络方面没有问题只能是服务器端的问题。这时你可以通过一下命令查看服务器状态
top 查看cpu
free 查看内存
df -h 查看磁盘
ps aux | grep pid 看下运行高的pid是什么服务
netstat -an 查看进程 :netstat -ntu |grep 8080|grep TIME_WAIT |wc -l 查看是否有大量tcp等待 修改这个参数:/etc/sysctl.conf net.ipv4.tcp_max_tw_buckets = 3000
5、select count(*) from v$process 查看数据链接数 ;select value from v$parameter where name = 'processes' 查看数据库最大链接数
修改数据库最大连接数:alter system set processes = 1000 scope = spfile;
show variables
like
'max_connections'
;(查可以看当前的最大连接数)
set
global
max_connections=1000;(设置最大连接数为1000,可以再次查看是否设置成功)
第二种:通过修改配置文件来修改mysql最大连接数(max_connections)。
这种方式说来很简单,只要修改MySQL配置文件my.ini 或 my.cnf的参数max_connections,将其改为max_connections=1000,然后重启MySQL即可。但是有一点最难的就是 my.ini这个文件在哪找。通常有两种可能,一个是在安装目录下,另一种是在数据文件的目录下,安装的时候如果没有人为改变目录的话,一般就在 C:/ProgramData/MySQL往下的目录下,linux系统中一般在/etc目录下。
5、是否代码有问题,比如具体的代码需要优化是否可以用比较简单的实现的功能实际代码量太大;mysql语句是否过于复杂,是否可以加下索引,是否mysql容量比较大了了,数据库是否锁死了等原因
6、服务框架是否可以改进下;加redis等缓存,数据库读写分离、动静分离架构;ngins反向代理负载均衡