注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

mmicky 的博客

追逐刹那的惊艳

 
 
 

日志

 
 

redis优化  

2017-02-21 08:27:45|  分类: 默认分类 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

1:打开的文件句柄数
lsof | wc -l
lsof -p 10974 |wc -l

2:打开socket端口数
# netstat -t | wc -l

3:DEV监控
# sar -n DEV 5 100

4:SOCK监控
# sar -n SOCK 5 100
# cat /proc/net/sockstat

5:TCP监控
# sar -n TCP 5 100

6:配置相关
硬件最大可打开文件数/proc/sys/fs/file-max
用户参数/etc/security/limits
root soft nofile 65536
root hard nofile 65536

内核参数/etc/sysctl.conf
net.ipv4.ip_local_port_range = 32768    60999  (1024-65535)
net.ipv4.ip_conntrack_max = 10240 (如果开启了IP监控工具)
vm.overcommit_memory = 1
net.core.somaxconn = 512
net.ipv4.tcp_max_syn_backlog = 512



# echo never > /sys/kernel/mm/transparent_hugepage/enabled


redis配置:
#vim /etc/redis/6379.conf
maxclients 50000

# TCP listen() backlog.
#
# In high requests-per-second environments you need an high backlog in order
# to avoid slow clients connections issues. Note that the Linux kernel
# will silently truncate it to the value of /proc/sys/net/core/somaxconn so
# make sure to raise both the value of somaxconn and tcp_max_syn_backlog
# in order to get the desired effect.
tcp-backlog 511

sysctl -p 報錯net.ipv4.ip_conntrack_max" is an unknown key 則:modprobe ip_conntrack


1:端口使用监视结果
# sar -n SOCK 5 100
A:并发每一个redis连接使用了2个socket端口
B:redis-benchmark命令结束后,不是所有打开的端口立即关闭,最大会有16384个端口会在处于TIME_WAIT
C:端口默认60秒后结束TIME_WAIT
基于B,并发20000个的时候,第一次运行redis-benchmark后打开40000个端口,结束后16384个端口会在处于TIME_WAIT,所以立即集训执行redis-benchmark时,会出现Cannot assign requested address;并发10000个的时候,第一次运行redis-benchmark后打开20000个端口,结束后10000个端口会在处于TIME_WAIT,所以立即集训执行redis-benchmark时可以继续运行。

连续四次运行10000个并发
./redis-benchmark -h 127.0.0.1 -r 1000000 -c 10000 -n 1000000 -t set


 echo "* - nofile 1048576" >> /etc/security/limits.conf
 
     echo "fs.file-max = 1048576" >> /etc/sysctl.conf
     echo "net.ipv4.ip_local_port_range = 1024 65535" >> /etc/sysctl.conf
 
     echo "net.ipv4.tcp_mem = 786432 2097152 3145728" >> /etc/sysctl.conf
     echo "net.ipv4.tcp_rmem = 4096 4096 16777216" >> /etc/sysctl.conf
     echo "net.ipv4.tcp_wmem = 4096 4096 16777216" >> /etc/sysctl.conf

net.core.rmem_default = 212992
net.core.rmem_max = 212992
net.core.wmem_default = 212992
net.core.wmem_max = 212992

net.ipv4.tcp_mem = 92424        123235  184848
net.ipv4.tcp_rmem = 4096        87380   6291456
net.ipv4.tcp_wmem = 4096        16384   4194304


file-max:
The value in file-max denotes the maximum number of file-
handles that the Linux kernel will allocate. When you get lots
of error messages about running out of file handles, you might
want to increase this limit


nr_open:
This denotes the maximum number of file-handles a process can
allocate. Default value is 1024*1024 (1048576) which should be
enough for most machines. Actual limit depends on RLIMIT_NOFILE
resource limit.

/proc/sys/fs/nr_open
  评论这张
 
阅读(36)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017