在Docker内启用perf

今天在学习 极客时间的系列课程-《 Linux性能优化实战》时,通过Docker运行了一个容器,需要借助perf来分析性能瓶颈,正常启动后,在容器内通过apt-get install -y linux-tools安装好了perf工具,但是启动时,却提示以下信息:

┌─Error:───────────────────────────────────────────────────────────┐
│No permission to enable cycles event.                             │
│                                                                  │
│You may not have permission to collect system-wide stats.         │
│                                                                  │
│Consider tweaking /proc/sys/kernel/perf_event_paranoid,           │
│which controls use of the performance events system by            │
│unprivileged users (without CAP_SYS_ADMIN).                       │
│                                                                  │
│The current value is 3:                                           │
│                                                                  │
│  -1: Allow use of (almost) all events by all users               │
│>= 0: Disallow raw tracepoint access by users without CAP_IOC_LOCK│
│>= 1: Disallow CPU event access by users without CAP_SYS_ADMIN    │
│>= 2: Disallow kernel profiling by users without C                │
│                                                                  │
│                                                                  │
│Press any key...                                                  │
└──────────────────────────────────────────────────────────────────┘

提示没有权限,需要更改 /proc/sys/kernel/perf_event_paranoid 文件,然后尝试执行:

$ echo 0 > /proc/sys/kernel/perf_event_paranoid
bash: /proc/sys/kernel/perf_event_paranoid: Read-only file system

解决办法:
需要使用 –privileged 参数,所以必须要重新启动容器,重新安装相关package.
启动容器时:docker run --privileged xxx 即可. 再次执行perf top -g -p 1385
查看分析效果


阅读全文

今天在Linux下使用shell的时候,发现当我想使用Ctrl+箭头进行快速跳跃的时候,并没有出现预期的 光标 移动,而是出现了 5D, 5C 的字样。

这个很奇怪,查下相关资料,可以这样避免:

把以下两行添加到 ~/.inputrc文件中:

"\e[1;5C": forward-word # ctrl + right<br /> "\e[1;5D": backward-word # ctrl + left

退出shell再重新登录,就可以解决了。


阅读全文

使用oh-my-zsh时,同时使用了screen插件,oh-my-zsh对screen有个优化,会自动的变更当前window的title,这个功能虽然看起来很好用,但对我个人来说,很是不习惯,因为我自己有对每个window命名的习惯,每个window干什么自己都记得很清楚,他一来了就给我重命名,搞的我很不习惯,所以,我需要把这个oh-my-zsh自动更改screen的title的情况关闭掉。

查找了相关资料后,找到了一个方法,其实很简单。在 .zshrc 的配置文件里,添加一行:

DISABLE_AUTO_TITLE="true"

就可以了。


阅读全文

大家共用的开发机io不正常,磁盘空间总是被莫名其妙的占满,怀疑是某些东西在不断的生成日志,,想看下具体是那些进程在使用IO,需要安装一个iotop, 使用命令sudo yum install iotop,安装成功,但是运行iotop时提示

No module named iotop.ui

To run an uninstalled copy of iotop,

launch iotop.py in the top directory

开始还以为是没安装好,卸载了重新安装,问题依然存在。

后来仔细分析了提示信息:No mudule name xxx 应该是python的提示信息,由于服务器上默认的python版本2.4太低,我们自己安装了2.6的版本,并且把/usr/bin/python指向了2.6版本的python,而使用yum安装的库在python2.4的路径下,这就导致直接运行iotop时出现模块不存在的信息,之前yum也有同样的问题。

解决方法也很简单,只需要把安装的iotop -> /usr/bin/iotop第一行的python运行环境由#!/usr/bin/python改为#!/usr/bin/python2.4即可。


阅读全文

centos下启用snmp

安装 Net-SNMP

CentOS及其它RedHat系列产品提供了net-snmp的二进制包。我们可以直接从源里安装。

yum install net-snmp net-snmp-devel net-snmp-utils

说明:net-snmp-devel是为了使用net-snmp-config, net-snmp-utils是为了使用snmpwalk。

配置 Net-SNMP

create-snmpv3-user -ro -A snmp@jiankongbao -a MD5 jiankongbao

以上命令,创建一个snmpv3用户,只读,使用MD5,用户名为jiankongbao,密码为snmp@jiankongbao。

注意:运行之前请先停用net-snmp服务。

service snmpd stop

运行 Net-SNMP

运行 Net-SNMP 服务的方法比较简单,不过Net-SNMP服务的名字是snmpd。

service snmpd start

如果要加入开机自动运行服务列表:

chkconfig snmpd on

检测 Net-SNMP

我们可以使用 snmpwalk 来检测snmp服务是否正常开启。

snmpwalk -v 3 -u jiankongbao -a MD5 -A "snmp@jiankongbao" -l authNoPriv 127.0.0.1 sysDescr

如果一切正常,就会返回正常结果。 有关snmpwalk的参数说明,请参见其man文档。


阅读全文

作者的图片

DigDeeply

Technology Stack: PHP/Openresty/GoLang, and so on…

Web Development Engineer

Beijing China