服务器常见troubleshooting(Linux)

目录

一、网页能打开,但是响应太慢?

二、网站打不开,怎么排查?

三、进程CPU占用率过高如何排查?

四、ping主机的时候发生丢包,怎么排查?

五、磁盘空间不够用发了,怎么去清理?

六、服务器中了木马病毒,如何处理?

七、磁盘io太高了怎么处理?

八、数据库主从复制断开了怎么处理?

九、ping服务器域名不通如何定位问题?


一、网页能打开,但是响应太慢?

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、交换机的端口与网卡的传输速率和双工模式是否一致

五、磁盘空间不够用发了,怎么去清理?

  1. df -Th查看磁盘使用情况
  2. df -i 查看分区的inode使用情况
  3. 如果inode资源足够
  4. lsof -p pid 定位到使用空间高的进程打开的文件 -- 做数据清洗
  5. iotop和pidstat定位哪些进程占用的io行为较多
  6. lsof -p pid 查看这个进程打开了哪些文件,把这些文件清洗

六、服务器中了木马病毒,如何处理?

  1. 查看是否有可疑的端口被打开,找到占用这个端口进程,杀死这个进程
  2. 查看是否有可疑的进程,消耗比较高的cpu、内存、磁盘io、网络带宽
  3. 查看计划任务
  4. 开机启动流程,查看自启的程序
  5. 排查日志

七、磁盘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消息已经发出
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值