apache链接状态查看和相关数值

本文深入研究Apache服务器并发请求处理,并详细解析了netstat命令用于分析TCP状态,包括CLOSED、LISTEN、SYN_RECV、SYN_SENT、ESTABLISHED等状态的含义。同时提供了检查FIN_WAIT1、TIME_WAIT状态过多问题的方法,以及解决策略,如开启keepalive选项,以优化服务器性能。

http://blog.youkuaiyun.com/hytfly/article/details/8523533


之前写过一篇关于apache的并发请求的文章,如今更深入的研究了一下,给大家分享,自己也做个笔记了。


上次说到这个牛逼的语句

netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
FIN_WAIT_1 286
FIN_WAIT_2 960
SYN_SENT 3
LAST_ACK 32
CLOSING 1
CLOSED 36
SYN_RCVD 144
TIME_WAIT 2520
ESTABLISHED 352
返回参数的说明如下:
        CLOSED:无连接是活动的或正在进行
  LISTEN:服务器在等待进入呼叫
  SYN_RECV:一个连接请求已经到达,等待确认
  SYN_SENT:应用已经开始,打开一个连接
  ESTABLISHED:正常数据传输状态
  FIN_WAIT1:应用说它已经完成
  FIN_WAIT2:另一边已同意释放
  TIME_WAIT:等待所有分组死掉
  CLOSING:两边同时尝试关闭
  TIME_WAIT:另一边已初始化一个释放
  LAST_ACK:等待所有分组死掉


TCP变迁图:


pache服务器的fin_wait1过多time_wait过多问题解决
1、fin_wait1状态过多。fin_wait1状态是在server端主动要求关闭tcp连接,并且主动发送fin以后,等待client端回复ack时候的状态。fin_wait1的产生原因有很多,需要结合netstat的状态来分析。
 

netstat -nat|awk '{print awk $NF}'|sort|uniq -c|sort -n

上面的命令可以帮助分析哪种tcp状态数量异常



netstat -nat|grep ":80"|awk '{print $5}' |awk -F: '{print $1}' | sort| uniq -c|sort -n

则可以帮助你将请求80服务的client ip按照连接数排序。


2、time_wait状态过多。


    通常表现为apache服务器负载高,w命令显示load average可能上百,但是web服务基本没有问题。同时ssh能够登陆,但是反应非常迟钝。


原因:最可能的原因是httpd.conf里面keepalive没有开,导致每次请求都要建立新的tcp连接,请求完成以后关闭,增加了很多time_wait的状态。另,keepalive可能会增加一部分内存的开销,但是问题不大。


分析:如果发现fin_wait1状态很多,并且client ip分布正常,那可能是有人用肉鸡进行ddos攻击、又或者最近的程序改动引起了问题。一般说来后者可能性更大,应该主动联系程序员解决。

但是如果有某个ip连接数非常多,就值得注意了,可以考虑用iptables直接封了他。

查IP的关于80端口的连接数可以用:

netstat -nat|grep ":80"|awk '{print $5}' |awk -F: '{print $1}' | sort| uniq -c|sort -n

可以看到目前IP的连接数。太多的,就要注意了。

此外再分享一个实时查看apache并发数的:

watch -n 1 -d "pgrep httpd|wc -l",冒号里的语句可以自己调啦~

当然目前我还有几个没搞清楚的问题,希望大家能教教我哈~


<think>好的,用户想了解如何在Ubuntu中查看系统状态信息,包括运行状况、服务状态资源使用情况。首先,我需要回忆相关的命令工具。用户之前的对话中提到过升级内核,但现在的问题转向系统状态监控。需要确保回答涵盖不同的方面:资源使用、服务状态、系统运行状况等。 首先,资源使用情况,常用的命令有top、htop、free、vmstat等。top提供实时进程资源概览,htop是增强版,界面更友好。free查看内存,vmstat显示虚拟内存统计。可能需要提到这些工具是否需要安装,比如htop通常需要手动安装。 然后是服务状态,systemctl命令管理systemd服务,可以查看所有服务状态,或者特定服务的状态。例如systemctl status服务名,或者systemctl list-units--type=service。 系统运行状况可能涉及日志查看,使用journalctl检查系统日志,dmesg查看内核日志。还有uptime命令显示运行时间负载平均值。 另外,用户可能对硬件信息感兴趣,比如CPU、磁盘使用情况。iostat、df、du这些命令可以查看磁盘I/O空间。lscpu显示CPU架构信息。网络状态方面,netstat、ss查看网络连接,ifconfig或ip addr显示网络接口信息。路由表可以用route或iproute。需要引用之前的引用内容,比如引用[4]提到查看网卡状态内核版本,引用[3]关于内存CPU的使用情况。引用[2]关于BIOS信息,虽然用户的问题可能不直接涉及,但可以提到系统信息查看的其他方面,如dmidecode。要确保回答结构清晰,分步骤说明每个部分,并给出具体命令示例。同时,注意使用中文,数学表达式用正确格式,但用户的问题可能不涉及数学公式,所以可能不需要太多LaTeX。但如果有性能指标,比如负载平均值的解释,可以用数学符号表示,如负载平均值的三个数值分别代表1分钟、5分钟、15分钟的平均负载,可以用$load_1$, $load_5$,$load_{15}$。需要生成相关问题,可能包括如何监控实时性能、如何设置监控警报、如何分析系统日志中的错误等。确保相关问题与系统状态相关,并且基于之前的引用内容,比如引用[3]提到的CPU内存使用情况,可以生成关于监控工具的问题。最后,检查引用标记是否正确添加,例如在提到内存使用情况时引用[3],网卡状态时引用[4],路由表时引用[5],BIOS信息引用[2]。确保每个引用自然出现在相关内容的末尾,不破坏回答的流畅性。</think>### 如何在Ubuntu中查看系统状态信息 #### 一、资源使用监控 1. **实时进程监控** ```bash top # 动态显示进程资源占用(按q退出) htop # 增强版监控工具(需安装:sudo apt install htop) ``` - **CPU负载**:首行显示$load_{avg} = (1min, 5min, 15min)$负载均值[^3] - **内存占用**:`Mem`行显示物理内存使用情况,`Swap`行显示虚拟内存状态[^3] 2. **内存与交换空间** ```bash free -h # 以易读格式显示内存使用 ``` 输出示例: ``` total used free shared buff/cache available Mem: 7.7G 2.1G 1.5G 45M 4.1G 5.2G Swap: 1.0G 0B 1.0G ``` 3. **磁盘I/O监控** ```bash vmstat 2 # 每2秒刷新虚拟内存统计 iostat -xz 2 # 显示磁盘I/O详细信息 ``` #### 二、服务状态检查 1. **查看所有服务状态** ```bash systemctl list-units --type=service --all ``` 2. **检查特定服务** ```bash systemctl status apache2 # 以Apache服务为例 ``` 关键状态字段: - Active: active (running) 表示服务正常运行 - Loaded: loaded (/lib/...) 表示已加载服务单元 #### 三、系统运行状况分析 1. **系统启动日志** ```bash journalctl -b # 查看本次启动日志 dmesg | less # 查看内核环形缓冲区日志 ``` 2. **网络状态检查** ```bash ip addr show # 查看网络接口状态[^4] ss -tuln # 显示所有TCP/UDP监听端口[^5] netstat -s # 统计网络协议栈信息 ``` 3. **硬件信息查看** ```bash lscpu # CPU架构信息 sensors # 硬件温度监控(需安装lm-sensors) dmidecode -t bios # 查看BIOS信息[^2] ``` #### 四、自动化监控工具 ```bash glances # 全功能监控面板(需安装:sudo apt install glances) nmon # 交互式性能监控工具 ``` 示例输出结构: ``` CPU[|||82.3%] Mem[|||||||||65%] Swap[|5%] Net: eth0 ↑1.2MB ↓4.8MB Disk: sda1 ↑120KB/s ↓980KB/s ``` --- ### 关键指标解读 1. **CPU负载阈值**:建议$load_{avg} < CPU核心数 \times 0.7$ 2. **内存警告线**:`available`值小于总内存的10%需警惕[^3] 3. **磁盘健康度**:通过`smartctl -a /dev/sda`检查SMART状态 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值