Chinaunix首页 | 论坛 | 博客
  • 博客访问: 278848
  • 博文数量: 28
  • 博客积分: 690
  • 博客等级: 上士
  • 技术积分: 860
  • 用 户 组: 普通用户
  • 注册时间: 2011-11-24 13:52
文章分类

全部博文(28)

文章存档

2012年(28)

分类: LINUX

2012-09-12 19:12:54

在学校打开百度主页()发现打不开,如果你是一名系统运维人员,你该怎样去诊断定位故障,尽可能的列出导致这种现象的情况,并且说出分析的方法 

从客户机方面考虑,先确定本机是否已连上了网络,然后查看DNS和IP是否被固定住了,然后查看hosts文件是否这里面有设置。
从服务器方面考虑,可能此时访问百度的访问量过大,但是服务器的负荷过大,到时请求超时了。
服务器硬件方面,首先是网卡,可能此时网卡的负荷过大,导致访问失败。然后是内存,内存容量过小而交换分区被占满了,导致访问失败。
在应用程序方面,可能使用的WEB服务器没有进行过优化,导致当访问量增大时,访问失败。

服务器需要监控哪些项目?凭借这些项目如何判断服务器的瓶颈?
在硬件方面,CPU可以通过uptime命令来进行查看cpu1分钟,5分钟,15分钟的平均负荷。在top命令中可以查看,在CPU那行中有一个%id代表CPU的闲置情况,如果值很大说明CPU处于闲置状态。%wa代表iowait,如果这个值比较大说明系统的IO肯定有问题。如果%sy代表系统的代码产生的,如果这个过大说明要优化代码(%us 过高,那么就是程序逻辑占用CPU比较高,优化代码)。从内存方面,可以用free -m命令查看当前的内存使用情况,如果发现swap分区被频繁的读写而且值非常大的话,则需要考虑增加内存了。在磁盘的IO方面,可以用vmstat中的IO那栏,查看bi和bo的值的情况,如果值过大,但是实际的传输速度不能满足现状,则要增加硬盘,或做raid。
在应用程序方面,可以用top命令,查看当前运行的应用程序的VIRT和SHR,VIRT(虚拟的内存空间),SHR(实际的内存空间)。如果virt是shr的10倍,则说明该应用程序需要优化。
在网络方面,可以用ifconfig查看当前网卡的使用情况,如果发现overruns有数字,说明有溢出,网卡负荷过大需要增加网卡,可以做bongding增加网卡流量。还可以在/etc/sysctl.conf文件中修改TCP相关性能的值。
在操作系统方面,可以根据当前系统中存放文件的情况mke2fs修改block和inode/block的值,如果都是碎文件,则将其值改小。在一个目录下不要放太多的小文件,因为操作系统有一个预读的过程,需要占用内存空间。

如何防止SYN_flood
1.echo 1 > /proc/sys/net/ipv4/tcp_syncookies 可以有效防止SYN_FLOOD
2.通过netstat -an | grep SYN_RECV 查看处于SYN_RECV状态下是够有同一个IP同时在访问主机,然后去查看/var/log/message,里面是否提示了SYN_flood攻击。如果有立刻用awk截取出攻击者的IP,然后用iptables -I INPUT -p tcp --dport 80 --source 攻击者的IP地址 -j DROP。还可以根据实际情况在防火墙里设置iptables -A INPUT -p tcp -m limit --limit 最大访问量 --limit-burst 突发值 
3.利用shell脚本方式,在计划任何里面每分钟执行一遍该SHELL脚本,先去检查/var/log/message文件是否有最新的syn flooding,有的话就对netstat -an中攻击者IP字段进行截取,然后通过防火墙去阻止。
阅读(2934) | 评论(0) | 转发(2) |
给主人留下些什么吧!~~