博文

目前显示的是标签为“Linux”的博文

服务器丢包分析-iptables规则-MTU大小设置错误-perf-火焰图分析处理请求时内核线程调用

图片
服务器丢包分析–iptables规则以及MTU大小设置错误 容器利用 Linux 内核提供的命名空间技术,将不同应用程序的运行隔离起来,并用统一的 镜像,来管理应用程序的依赖环境。这为应用程序的管理和维护,带来了极大的便捷性,并 进一步催生了微服务、云原生等新一代技术架构。 容易发生启动过慢、运行一段时间后 OOM 退出等问题。容器化后,应用程序会通过命名空间进行隔离。所以,你在分析时,不要忘了** 结合命名空间、cgroups、iptables **等来综合分析: cgroups 会影响容器应用的运行; iptables 中的 NAT,会影响容器的网络性能; 叠加文件系统,会影响应用的 I/O 性能等。 数据包还没传输到应用程序中, 就被丢弃了。这些被丢弃包的数量,除以总的传输包数,也就是我们常说的丢包率。丢包通常会带来严重的性能下降,特别是对 TCP 来说,丢包通常意味着网络拥塞和重传, 进而还会导致网络延迟增大、吞吐降低。 丢包模拟 1 docker run --name nginx --hostname nginx --privileged -p 80:80 -itd feisky/nginx:drop 没有使用 ping,是因为 ping 基于 ICMP 协议,而 Nginx 使 用的是 TCP 协议。 -c 表示发送 10 个请求,-S 表示使用 TCP SYN,-p 指定端口为 80 hping3 -c 10 -S -p 80 10.211.55.66 RTT 也有非常大的波动变化,小的时候只 有 0.3ms,而大的时候则有 3s。 3s 的 RTT ,很可能是 因为丢包后重传导致的。 流程分析 各层分析 VM1 的网络和内核配置也没问题。这样 一来,有可能发生问题的位置,就都在容器内部了。 1 2 docker exec -it nginx bash 链路层 当缓冲区溢出等原因导致网卡丢包时,Linux 会在网卡收发数据的统计信息中,记录下收发错误的次数。 你可以通过 ethtool 或者 netstat ,来查看网卡的丢包记录。 netstat -i 输出中的 RX-OK、RX-ERR、RX-DRP、RX-OVR ,分别表示接收时的总包数、总错误数、 进入 Ring Buffer 后因其他原因(如内存不足)导致的丢包数以及 Ring Buf...

shell展开与shell数组

00 0 12 11 01 1 13 7 02 0 14 1 03 0 15 7 04 1 16 6 04 1 17 5 06 6 18 4 07 3 19 4 08 1 20 1 09 14 21 0 10 2 22 0 11 5 23 0 Total files = 80 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 当执行该 hours 程序时,指定当前目录作为目标目录。它打印出一张表显示一天(0-23小时)每小时内, 有多少文件做了最后修改。 ```bash #!/bin/bash usage () { echo "usage: $(basename $0) directory" >&2 } # Check that argument is a directory if [[ ! -d $1 ]]; then usage exit 1 fi # Initialize array for i in {0..23}; do hours[i]=0; done # Collect data for i in $(stat -c %y "$1"/* | cut -c 12-13); do j=${i/#0} ((++hours[j])) ((++count)) done # Display data echo -e "Hour\tFiles\tHour\tFiles" echo -e "----\t-----\t----\t-----" for i in {0..11}; do j=$((i + 12)) printf "%02d\t%d\t%02d\t%d\n" $i ${hours[i]...