除开strace外还有一款性能分析工具:
sudo yum install perf
perf record -F max -a -g -- screen -ls
perf record -F max -a -g -- screen -ls
info: Using a maximum frequency rate of 11,000 Hz
There is a screen on:
16882.abc (Detached)
1 Socket in /var/run/screen/S-root.
[ perf record: Woken up 14 times to write data ]
[ perf record: Captured and wrote 4.143 MB perf.data (34888 samples) ]
可在不同设备上读取的perf.data 文件. 您可以使用 perf 工具将性能数据记录到 perf.data 文件中,以便在不同的设备上分析。
echo Soft: $(ulimit -Sn)
echo Hard: $(ulimit -Hn)
Soft: 1024000
Hard: 1024000
立即生效的解决办法(重启配置失效):
ulimit -Sn 10000
ulimit -Hn 50000
重启后永久生效实操:
要在 CentOS 7 上永久设置 `ulimit`,您需要修改 `/etc/security/limits.conf` 文件。这个文件允许您设置系统级别的资源限制。您可以按照以下步骤进行修改:
1. 打开终端并以 root 用户身份登录。
2. 使用文本编辑器(如 `vi` 或 `nano`)打开 `/etc/security/limits.conf` 文件:
```bash
sudo vi /etc/security/limits.conf
```
3. 在文件末尾添加以下行:
```
* soft nofile 10000
* hard nofile 50000
```
这里,`soft` 代表软限制,`hard` 代表硬限制。软限制是系统允许的最大值,超过此限制时会发出警告。硬限制是系统允许的绝对最大值,超过此限制时会导致操作失败。通常情况下,软限制和硬限制是相同的。
4. 保存并关闭文件。在 vi 中,您可以按 `Esc` 键输入 `:wq` 然后按 `Enter` 保存并退出。
5. 重新启动系统或重新登录以使更改生效。
现在 `ulimit` 的设置应该在系统重新启动后生效,并且将永久保持。
fix: Normalize RLIMIT_NOFILE (LimitNOFILE) to sensible defaults:
https://github.com/moby/moby/pull/45534
gnu screen run extremely slow when using 'root' user in container since docker 23.0.1 #45380:
https://github.com/moby/moby/issues/45380
=============================================================
火焰图
on-cpu火焰图可以用于分析cpu是被哪些线程、哪些函数占用的,可以方便的找到热点代码便于后续分析优化。下面我们介绍下火焰图的生成和使用方法。
使用方法
准备FlameGraph工具。
git clone https://github.com/brendangregg/FlameGraph.git
用perf record采集CPU信息。
perf record -e cpu-clock -g ./perf_test
Ctrl+c结束执行后,在当前目录下会生成采样数据perf.data。
用perf script工具对perf.data进行解析。
perf script -i perf.data &> perf.unfold
将perf.unfold中的符号进行折叠。
./stackcollapse-perf.pl perf.unfold &> perf.folded
最后生成svg图。
./flamegraph.pl perf.folded > perf.svg
perf.svg 用浏览器就可以打开
来自:https://github.com/moby/moby/pull/45534
sudo yum install perf
perf record -F max -a -g -- screen -ls
perf record -F max -a -g -- screen -ls
info: Using a maximum frequency rate of 11,000 Hz
There is a screen on:
16882.abc (Detached)
1 Socket in /var/run/screen/S-root.
[ perf record: Woken up 14 times to write data ]
[ perf record: Captured and wrote 4.143 MB perf.data (34888 samples) ]
可在不同设备上读取的perf.data 文件. 您可以使用 perf 工具将性能数据记录到 perf.data 文件中,以便在不同的设备上分析。
echo Soft: $(ulimit -Sn)
echo Hard: $(ulimit -Hn)
Soft: 1024000
Hard: 1024000
立即生效的解决办法(重启配置失效):
ulimit -Sn 10000
ulimit -Hn 50000
重启后永久生效实操:
要在 CentOS 7 上永久设置 `ulimit`,您需要修改 `/etc/security/limits.conf` 文件。这个文件允许您设置系统级别的资源限制。您可以按照以下步骤进行修改:
1. 打开终端并以 root 用户身份登录。
2. 使用文本编辑器(如 `vi` 或 `nano`)打开 `/etc/security/limits.conf` 文件:
```bash
sudo vi /etc/security/limits.conf
```
3. 在文件末尾添加以下行:
```
* soft nofile 10000
* hard nofile 50000
```
这里,`soft` 代表软限制,`hard` 代表硬限制。软限制是系统允许的最大值,超过此限制时会发出警告。硬限制是系统允许的绝对最大值,超过此限制时会导致操作失败。通常情况下,软限制和硬限制是相同的。
4. 保存并关闭文件。在 vi 中,您可以按 `Esc` 键输入 `:wq` 然后按 `Enter` 保存并退出。
5. 重新启动系统或重新登录以使更改生效。
现在 `ulimit` 的设置应该在系统重新启动后生效,并且将永久保持。
fix: Normalize RLIMIT_NOFILE (LimitNOFILE) to sensible defaults:
https://github.com/moby/moby/pull/45534
gnu screen run extremely slow when using 'root' user in container since docker 23.0.1 #45380:
https://github.com/moby/moby/issues/45380
=============================================================
火焰图
on-cpu火焰图可以用于分析cpu是被哪些线程、哪些函数占用的,可以方便的找到热点代码便于后续分析优化。下面我们介绍下火焰图的生成和使用方法。
使用方法
准备FlameGraph工具。
git clone https://github.com/brendangregg/FlameGraph.git
用perf record采集CPU信息。
perf record -e cpu-clock -g ./perf_test
Ctrl+c结束执行后,在当前目录下会生成采样数据perf.data。
用perf script工具对perf.data进行解析。
perf script -i perf.data &> perf.unfold
将perf.unfold中的符号进行折叠。
./stackcollapse-perf.pl perf.unfold &> perf.folded
最后生成svg图。
./flamegraph.pl perf.folded > perf.svg
perf.svg 用浏览器就可以打开
来自:https://github.com/moby/moby/pull/45534
作者:jackxiang@向东博客 专注WEB应用 构架之美 --- 构架之美,在于尽态极妍 | 应用之美,在于药到病除
地址:https://jackxiang.com/post/12366/
版权所有。转载时必须以链接形式注明作者和原始出处及本声明!
最后编辑: jackxiang 编辑于2024-4-18 01:07
评论列表