目录
一、网页能打开,但是响应太慢?
1、检查带宽有没有被占满
2、升级硬件
3、dns解析慢
4、CPU和内存被占满
5、是否有大文件的请求(大图片、大视频)
6、是不是加载某个资源太慢(资源在第三方站点上)
7、请求的地理位置相距比较远
8、后端代码有冗余、数据库产生死锁
9、前端页面请求的资源过多
10、nginx的连接数有没有跑满了
二、网站打不开,怎么排查?
1、检查是否能正常上网
2、看是否能ping通
3、dns解析是否有问题
4、检查web后台是否有bug
5、后台的web服务有没有宕掉
三、进程CPU占用率过高如何排查?
1、使用top定位CPU占用率高的进程
2、使用top -p pid -H 定位问题进程中占用率最高的线程
3、使用jstack pid | grep pid的16进制 定位问题代码
4、分析代码问题 -- 是否有死循环等
四、ping主机的时候发生丢包,怎么排查?
1、带宽是否占满
2、网线是否损坏
3、换个交换机端口
4、网卡是否有问题
5、交换机的端口与网卡的传输速率和双工模式是否一致
五、磁盘空间不够用发了,怎么去清理?
- df -Th查看磁盘使用情况
- df -i 查看分区的inode使用情况
- 如果inode资源足够
- lsof -p pid 定位到使用空间高的进程打开的文件 -- 做数据清洗
- iotop和pidstat定位哪些进程占用的io行为较多
- lsof -p pid 查看这个进程打开了哪些文件,把这些文件清洗
六、服务器中了木马病毒,如何处理?
- 查看是否有可疑的端口被打开,找到占用这个端口进程,杀死这个进程
- 查看是否有可疑的进程,消耗比较高的cpu、内存、磁盘io、网络带宽
- 查看计划任务
- 开机启动流程,查看自启的程序
- 排查日志
七、磁盘io太高了怎么处理?
① 程序设计层面
根据操作系统设计原理,当应用程序需要读取文件中的数据时,尽量保证:
- 避免磁盘的随机 IO , 充分利用磁盘预读缓存和局部性原理。
- 尽可能地顺序读写一个文件
- 单进程读写硬盘。
- 避免对大目录读写。
- 把小文件转换为大文件读写。
② 系统参数层面
调整请求队列数来提高效率(默认 128)。
[root@kvm-10-115-88-47 sxg]# cat /sys/block/sda/queue/nr_requests 128
通过数据预读并且记载到随机访问内存方式提高磁盘读操作,下面这个参数对顺序读非常有用(默认 128 k)。
[root@kvm-10-115-88-47 sxg]# cat /sys/block/sda/queue/read_ahead_kb 128
控制文件系统的文件系统缓冲区的大小(单位:百分比)。调大后会使用更多系统内存用于磁盘写缓冲。
[root@kvm-10-115-88-47 sxg]# cat /proc/sys/vm/dirty_ratio 30
设置内核写缓冲区的数据多“旧”了之后,刷新至磁盘(默认 30 秒)。
[root@kvm-10-115-88-47 sxg]# cat /proc/sys/vm/dirty_expire_centisecs 3000
此外,还可以进行调整 IO 调度算法。
八、数据库主从复制断开了怎么处理?
mysql主从同步常见异常及恢复方法
1. 一般的异常只需要跳过一步即可恢复
>slave stop;
>SET GLOBAL sql_slave_skip_counter = 1;
>slave start;
2.断电导致主从不能同步时,通主库的最后一个bin-log日志进行恢复,在主库服务器上mysqlbinlog mysql-bin.xxxx > binxxxx.txt
tail -n 100000 binxxxx.txt > tail-binxxxx.txt
vim tail-binxxxx.txt 打开tail-binxxxx.txt文件找到最后一个postion值
然后在从库上,change host to 相应正确的值
>slave stop;
>change master to master_host='ip', master_user='username', master_password='password', master_log_file='mysql-bin.xxxx', master_log_pos=xxxx;
>slave start;
>show slave status\G;
3.主键冲突、表已存在等错误代码如1062,1032,1060等,可以在mysql主配置文件指定
略过此类异常并继续下条sql同步,这样也可以避免很多主从同步的异常中断
[mysqld]
slave-skip-errors = 1062,1032,1060
九、ping服务器域名不通如何定位问题?
1、首先检查服务器本身配置是否有问题(能否上网?ip冲突、系统服务没有配对有没有起来等)
2、检查虚拟服务器所桥接的真实物理机有没有问题(端口是否处于激活状态等)
3、如果真实物理机没有问题,并且两台服务器在同二层的话,就可能是交换机的问题(端口的配置,vlan )
排除自己局域网内部的原因,ping局域网其他主机、ping网关、ping自己:①一种是ping的request没发出去
- 网卡的物理链路状态down了,没有生成任何直连路由,导致没法arp请求包,用原来本机配置的ip回显目标主机不可达。
- 对方是否开机?ip是否存在?开机的话,目的主机是否接入正确的对应广播域里?对应交换机有vlan划分的话,检查硬件接口是否在同一vlanid里,是否在同一广播域里?
- 有跨交换机组网相同的vlan的话,检查经过节点设备对应的中间trunk链路是否允许对应vlanid通过?接口是否划入同一vlanid里?
- 源主机是否掩码错误?走直连路由是否正确?是否应该走默认路由,而走了直连路由。
②另一种是ping的request消息发出去,但没有收到回包响应,超时time out。
- 网卡物理状态出错,源设备是否双网络,仅一个网卡有网关,没有网关的设备物理状态down导致发给默认路由。默认路由转发包到路由器wan口发出,没有回包,导致time out。
- 检查目的设备防火墙,是否防火墙拦截了ping的requst消息进入设备高层。
- 目的设备子网掩码的设置错误,导致没有回程路由。
- 环境中存在多网卡设备接在同一交换机下,用错误的mac地址回答请求本机其他网卡ip地址的arp请求消息,或者广播域存在ip冲突,回答arp请求,导致源设备的request消息发给了错误mac地址,而没有回包导致time out。
- 目的设备的掩码和默认路由设置有问题,导致认为回包走默认路由,发给了另一个mac地址。
- 若是同网段,ping后显示time out超时,检查arp -a有对应的目的ip的mac地址,证明网络层的ping的request消息已经发出