设为首页 收藏本站
查看: 976|回复: 0

[经验分享] 记录redis "Connection timed out"处理

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2016-6-24 08:54:01 | 显示全部楼层 |阅读模式
最近程序报错:Failed to connect to redis: Connection timed out
发现THP的有关信息,决定做测试及修改
1.page 与 Huge Pages
page:
    一般而言,内存管理的最小块级单位叫做page,一个page是4096bytes,1M的内存会有256个page,1GB的话就会有256,000个page。
     CPU通过内置的内存管理单元维护着page表记录。
Huge pages:
    Huge Pages就是大小为2M到1GB的内存page,主要用于管理数千兆的内存,比如1GB的page对于1TB的内存来说是相对比较合适的。
HugePage广泛启用开始于Kernal 2.6,一些版本下2.4内核也可以是用。在操作系统Linux环境中,内存是以页Page的方式进行分配,默认大小为4K。如果需要比较大的内存空间,则需要进行频繁的页分配和管理寻址动作。
    HugePage是传统4K Page的替代方案。顾名思义,是用HugePage可以让我们有更大的内存分页大小。无论是HugePage还是传统的正常Page,这个过程都涉及到OS内存寻址过程
当一个进程访问内存的时候,并不是直接进行内存位置访问,是需要通过Page Table进行转移变换。在使用HugePage的情况下,PageTable具有了额外的属性,就是判断该页记录是HugePage还是Regular Page。
2.THP
  THP(Transparent Huge Pages)是一个使管理Huge Pages自动化的抽象层。
  Linux本身的页大小是固定的4KB,在2.6.38内核新增了THP,透明地支持huge page(2MB)的使用,并且默认开启。
  THP优点:
    (1) 减少page fault。一次page fault可以加载更大的内存块。
    (2) 更小的页表。相同的内存大小,需要更少的页。
    (3) 由于页表更小,虚拟地址到物理地址的翻译也更快。
  THP缺点:
    (1)降低分配内存效率。需要大块、连续内存块,内核线程会比较激进的进行compaction,解决内存碎片,加剧锁争用。
    (2)降低IO吞吐。由于swapable huge page,在swap时需要切分成原有的4K的页。Oracle的测试数据显示会降低30%的IO吞吐。
3.测试性能
  查看系统版本:

1
2
uname -r
  Linux ckl-master1 2.6.32-504.el6.x86_64




  查看当前的Huge pages设置:
1
2
3
4
5
6
7
  grep Huge /proc/meminfo
AnonHugePages:   5971968 kB
HugePages_Total:       0
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB



  查看是否开启了Huge pages:
1
2
  cat /sys/kernel/mm/transparent_hugepage/enabled
[always] madvise never



测试THP开启redis性能:
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
# /usr/local/redis/bin/redis-benchmark -P 4 -t set -r 5000000 -n 10000000
    ====== SET ======
      10000000 requests completed in 41.43 seconds
      50 parallel clients
      3 bytes payload
      keep alive: 1

    98.62% <= 1 milliseconds
    98.62% <= 2 milliseconds
    98.63% <= 4 milliseconds
    98.63% <= 5 milliseconds
    98.63% <= 7 milliseconds
    98.63% <= 12 milliseconds
    98.64% <= 13 milliseconds
    98.64% <= 14 milliseconds
    98.65% <= 15 milliseconds
    98.66% <= 16 milliseconds
    98.68% <= 17 milliseconds
    98.69% <= 18 milliseconds
    98.74% <= 19 milliseconds
    98.83% <= 20 milliseconds
    98.96% <= 21 milliseconds
    99.13% <= 22 milliseconds
    99.32% <= 23 milliseconds
    99.49% <= 24 milliseconds
    99.60% <= 25 milliseconds
    99.67% <= 26 milliseconds
    99.74% <= 27 milliseconds
    99.79% <= 28 milliseconds
    99.81% <= 29 milliseconds
    99.84% <= 30 milliseconds
    99.85% <= 31 milliseconds
    99.86% <= 32 milliseconds
    99.86% <= 33 milliseconds
    99.87% <= 34 milliseconds
    99.87% <= 35 milliseconds
    99.88% <= 36 milliseconds
    99.89% <= 37 milliseconds
    99.89% <= 38 milliseconds
    99.89% <= 39 milliseconds
    99.89% <= 40 milliseconds
    99.90% <= 42 milliseconds
    99.90% <= 43 milliseconds
    99.91% <= 44 milliseconds
    99.91% <= 49 milliseconds
    99.91% <= 53 milliseconds
    99.91% <= 54 milliseconds
    99.92% <= 55 milliseconds
    99.92% <= 56 milliseconds
    99.93% <= 57 milliseconds
    99.93% <= 62 milliseconds
    99.93% <= 63 milliseconds
    99.93% <= 65 milliseconds
    99.93% <= 66 milliseconds
    99.93% <= 67 milliseconds
    99.94% <= 68 milliseconds
    99.94% <= 74 milliseconds
    99.94% <= 76 milliseconds
    99.94% <= 77 milliseconds
    99.94% <= 78 milliseconds
    99.95% <= 79 milliseconds
    99.95% <= 81 milliseconds
    99.95% <= 82 milliseconds
    99.95% <= 83 milliseconds
    99.95% <= 85 milliseconds
    99.96% <= 86 milliseconds
    99.96% <= 91 milliseconds
    99.96% <= 92 milliseconds
    99.97% <= 93 milliseconds
    99.97% <= 95 milliseconds
    99.97% <= 96 milliseconds
    99.98% <= 97 milliseconds
    99.99% <= 98 milliseconds
    99.99% <= 99 milliseconds
    99.99% <= 100 milliseconds
    99.99% <= 101 milliseconds
    99.99% <= 126 milliseconds
    100.00% <= 157 milliseconds
    100.00% <= 158 milliseconds
    100.00% <= 168 milliseconds
    100.00% <= 169 milliseconds
    100.00% <= 169 milliseconds
    241382.62 requests per second



关闭THP:
1
2
3
  echo never > /sys/kernel/mm/transparent_hugepage/enabled
  cat /sys/kernel/mm/transparent_hugepage/enabled   
  always madvise [never]




  测试关闭THPredis性能:
1
2
3
4
5
6
7
8
9
10
11
12
/usr/local/redis/bin/redis-benchmark -P 4 -t set -r 5000000 -n 10000000
    ====== SET ======
      10000000 requests completed in 26.72 seconds
      50 parallel clients
      3 bytes payload
      keep alive: 1

    99.70% <= 1 milliseconds
    99.71% <= 2 milliseconds
    100.00% <= 3 milliseconds
    100.00% <= 3 milliseconds
    374321.53 requests per second



关闭THP后,redis的响应时间明显缩短,建议关闭THP,需要重启redis进程


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-234393-1-1.html 上篇帖子: RedisLive & redis-stat监控工具部署 下篇帖子: Redis-stat的安装与使用 记录
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表