对docker container进行内核参数调优(tune)
2015-04-06 22:37
405 查看
对于docker container的调优还是和普通的Linux调优有很大的区别
正确的做法是(以CentOS host为例)
在host上执行
这样再进入docker container, ulimit -a就可以看到更改了
对于Ubuntu请参考此文
然后重启docker container生效。
如果docker container不是以 –net=”host” 方式启动的,那么它将有自己独立的网络堆栈。修改host的配置将会无效。在container中又无法直接修改/proc,因为docker会以只读的方式重新挂载/proc/sys。 对于这个问题,可以在container启动的时候将/proc挂载到另一可读写位置,譬如
然后就可以在container内部进行修改了
然后在container中可以查看到修改生效
需要注意的是,如果内核版本过低(<3.12), 有些参数是无法修改的
上面提到的Linux内核各调优参数可以参考此文
修改最大文件数(open files)
直接修改 container的 /etc/security/limits.conf无效正确的做法是(以CentOS host为例)
在host上执行
sudo sh -c 'printf "\nulimit -HSn 999999\n" >> /etc/sysconfig/docker' sudo service docker restart
这样再进入docker container, ulimit -a就可以看到更改了
[root@f258c7598394 /]# ulimit -a core file size (blocks, -c) 0 data seg size (kbytes, -d) unlimited scheduling priority (-e) 0 file size (blocks, -f) unlimited pending signals (-i) 7810 max locked memory (kbytes, -l) 64 max memory size (kbytes, -m) unlimited open files (-n) 999999 pipe size (512 bytes, -p) 8 POSIX message queues (bytes, -q) 819200 real-time priority (-r) 0 stack size (kbytes, -s) 10240 cpu time (seconds, -t) unlimited max user processes (-u) 7810 virtual memory (kbytes, -v) unlimited file locks (-x) unlimited
对于Ubuntu请参考此文
修改tcp/ip变量(sysctl)
如果docker container是以 –net=”host” 方式启动的,那么container和host共用同一个网络堆栈,只需要修改host的配置sudo sh -c 'printf "\nnet.ipv4.ip_local_port_range = 1024 65535\n" >> /etc/sysctl.conf'; sudo sh -c 'printf "net.ipv4.tcp_tw_recycle = 1\n" >> /etc/sysctl.conf'; sudo sh -c 'printf "net.ipv4.tcp_tw_reuse = 1\n" >> /etc/sysctl.conf'; sudo sh -c 'printf "net.core.rmem_max = 16777216\n" >> /etc/sysctl.conf'; sudo sh -c 'printf "net.core.wmem_max = 16777216\n" >> /etc/sysctl.conf'; sudo sh -c 'printf "net.ipv4.tcp_max_syn_backlog = 4096\n" >> /etc/sysctl.conf'; sudo sh -c 'printf "net.ipv4.tcp_syncookies = 1\n" >> /etc/sysctl.conf'; sudo sh -c 'printf "net.core.somaxconn = 1024\n" >> /etc/sysctl.conf'; sudo sh -c 'printf "net.ipv4.tcp_window_scaling = 1\n" >> /etc/sysctl.conf'; sudo sh -c 'printf "net.ipv4.tcp_rmem = 4096 87380 16777216\n" >> /etc/sysctl.conf'; sudo sh -c 'printf "net.ipv4.tcp_wmem = 4096 16384 16777216\n" >> /etc/sysctl.conf'; sudo sysctl -p;
然后重启docker container生效。
如果docker container不是以 –net=”host” 方式启动的,那么它将有自己独立的网络堆栈。修改host的配置将会无效。在container中又无法直接修改/proc,因为docker会以只读的方式重新挂载/proc/sys。 对于这个问题,可以在container启动的时候将/proc挂载到另一可读写位置,譬如
docker run -ti -v /proc:/writable-proc ubuntu:14.04 /bin/bash
然后就可以在container内部进行修改了
echo 1024 65535 > /writable-proc/sys/net/ipv4/ip_local_port_range echo 1 > /writable-proc/sys/net/ipv4/tcp_tw_recycle echo 1 > /writable-proc/sys/net/ipv4/tcp_tw_reuse echo 4096 > /writable-proc/sys/net/ipv4/tcp_max_syn_backlog echo 1 > /writable-proc/sys/net/ipv4/tcp_syncookies echo 1 > /writable-proc/sys/net/ipv4/tcp_window_scaling echo 4096 16384 16777216 > /writable-proc/sys/net/ipv4/tcp_wmem echo 4096 87380 16777216 > /writable-proc/sys/net/ipv4/tcp_rmem echo 16777216 > /writable-proc/sys/net/core/rmem_max echo 16777216 > /writable-proc/sys/net/core/wmem_max echo 1024 > /writable-proc/sys/net/core/somaxconn echo 999999 > /writable-proc/sys/fs/file-max
然后在container中可以查看到修改生效
cat /proc/sys/net/ipv4/ip_local_port_range cat /proc/sys/net/ipv4/tcp_tw_recycle cat /proc/sys/net/ipv4/tcp_tw_reuse cat /proc/sys/net/ipv4/tcp_max_syn_backlog cat /proc/sys/net/ipv4/tcp_syncookies cat /proc/sys/net/ipv4/tcp_window_scaling cat /proc/sys/net/ipv4/tcp_wmem cat /proc/sys/net/ipv4/tcp_rmem cat /proc/sys/net/core/rmem_max cat /proc/sys/net/core/wmem_max cat /proc/sys/net/core/somaxconn cat /proc/sys/fs/file-max
需要注意的是,如果内核版本过低(<3.12), 有些参数是无法修改的
上面提到的Linux内核各调优参数可以参考此文
相关文章推荐
- 【云计算】使用privilege权限对Docker内核参数进行定制
- Linux内核参数调优
- 高并发linux内核网络参数调优
- TCP通信内核参数调优——拥塞窗口
- Linux 内核Tcp Socket参数调优
- linux内核调优参数对比和解释
- Linux内核: 修改TCP/IP调优参数
- RHCE 系列(二):如何进行包过滤、网络地址转换和设置内核运行时参数
- 【linux之内核参数调优】
- linux内核参数调优,缓冲区调整,tcp/udp连接管理,保持,释放优化,gossary,terms
- RHCE 系列(二):如何进行包过滤、网络地址转换和设置内核运行时参数
- linux tcp/ip内核参数分析与调优[原创]--http://www.22455.com/index.php
- /etc/sysctl.conf 调优 & 优化Linux内核参数
- Linux内核: 修改TCP/IP调优参数
- 怎样使用oracle 的DBMS_SQLTUNE package 来执行 Sql Tuning Advisor 进行sql 自己主动调优
- Linux系统优化部分内核参数调优中文注释
- Linux常用的一些内核参数(调优)
- linux tcp/ip协议及内核参数分析与调优
- [转]linux下TCP/IP及内核参数优化调优
- RHCE 系列(二):如何进行包过滤、网络地址转换和设置内核运行时参数