Open huzilin opened 7 years ago
这个好像是连接超了吧
proxy_max_clients = 10000设置10000,还需要哪里再设置么? 我才只建立了不到1500个连接,而在两个机器压的情况,连1024都答不到,后端redis没有限制连接数大小,我直接去压后端数据库,能压到1500+的连接
看下你系统打开的最大文件描述符
open files (-n) 65535
我用root用户启动的
看 codis-proxy 和 codis-server 进程的。cat /proc/$pid/limits
# cat /proc/10445/limits
Limit Soft Limit Hard Limit Units
Max cpu time unlimited unlimited seconds
Max file size unlimited unlimited bytes
Max data size unlimited unlimited bytes
Max stack size 10485760 unlimited bytes
Max core file size 0 unlimited bytes
Max resident set unlimited unlimited bytes
Max processes 1549038 1549038 processes
Max open files 65535 65535 files
Max locked memory 65536 65536 bytes
Max address space unlimited unlimited bytes
Max file locks unlimited unlimited locks
Max pending signals 1549038 1549038 signals
Max msgqueue size 819200 819200 bytes
Max nice priority 0 0
Max realtime priority 0 0
Max realtime timeout unlimited unlimited us
日志里一直在输出read: connection reset by peer。目前benchmark一直在压测,并且测试工具还没有返回报错,只有512个线程
2017/08/09 18:59:35 session.go:78: [INFO] session [0xc42009cc00] create: {"ops":0,"create":1502276375,"remote":"10.100.90.20:54708"}
2017/08/09 18:59:35 session.go:85: [INFO] session [0xc42009cc00] closed: {"ops":0,"create":1502276375,"remote":"10.100.90.20:54708"}, error: read tcp4 10.100.90.20:19100->10.100.90.20:54708: read: connection reset by peer
2017/08/09 18:59:40 session.go:78: [INFO] session [0xc42009c000] create: {"ops":0,"create":1502276380,"remote":"10.100.90.21:47897"}
2017/08/09 18:59:40 session.go:85: [INFO] session [0xc42009c000] closed: {"ops":0,"create":1502276380,"remote":"10.100.90.21:47897"}, error: read tcp4 10.100.90.20:19100->10.100.90.21:47897: read: connection reset by peer
connection reset by peer
这种错误一般都是 proxy 直接 reset 的结果吧。你把 proxy 的 loglevel 挑高了,从 proxy 的 log 里面应该有信息,以及 reset 的原因。
好像 是slots没有完全分配
你的日志里,错误已经很明显了。出错是因为被 10.100.90.21:47897
把连接 reset 掉了导致的。所以你看看对应的日志。以及 proxy 前后的日志,找找有关的东西,包括与 codis-server 有关的日志。挖掘一下具体的原因。
@Umbraller 似乎也不太是,如果是 slots 没有分配完全,proxy 的日志不会是 reset by xxx,我怀疑那个 xxx 是 codis-server。
@huzilin 你把槽那个截图下,
slots截图如下
那就是我分析的错了,应该是上面大佬们说的那些了,看下proxy的日志,把级别调成info或者是debug级别,再压测,再看日志
@spinlock 那个不是codis-server,那个连接是短连接,隔几秒来一次,我现在换了一个端口,就没有按个报错。 但是连接数还是上不去。
我在两个server上同时执行
./redis-benchmark -p 19200 -h 10.100.90.20 -n 1000000000 -r 100000000000 -c 512 -t set
没有报错,然后再在第三台机器启动一个./redis-benchmark且只启动1个连接
# redis-benchmark -p 19200 -h 10.100.90.20 -n 1000000000 -r 100000000000 -c 1 -t set
Writing to socket: Connection reset by peer
All clients disconnected... aborting.
日志报错
2017/08/10 11:13:27 session.go:78: [INFO] session [0xc43f7a9b00] create: {"ops":0,"create":1502334807,"remote":"10.100.90.22:20406"}
2017/08/10 11:13:27 session.go:96: [INFO] session [0xc43f7a9b00] closed: {"ops":0,"create":1502334807,"remote":"10.100.90.22:20406"}, error: too many sessions
日志已经开启了debug最多就这些输出,没有其他输出。
错误日志写的很清楚了。too many sessions
应该是 proxy_max_clients
超了。你检查一下 proxy.toml 是否确实生效了。你用浏览器访问 proxy 的 admin 端口能看到
我换了个端口就好了,用的新配置没有改那里。
之前一直刷connection reset by pee
,可能是redis-benchmark被压崩了还是其他什么探测程序一直连我设置的那个proxy端口导致的。
keepalived一直做ping活,所以日志会一直刷这个信息。
测试的时候,我们把一台服务器挂掉。然后那台机器上的proxy长时间处于timeout。 "ff87667b191d3fb7f1a86c126d229cb3": { "unixtime": 1502439539, "timeout": true }
在此期间所有的group都不能进行promote,知道timeout恢复。期间如果进行了promote的点击、或者删除proxy的点击都会导致dashboard夯住。请问这个timeout值可以配置么?
还有 我当时为了在timeout期间,我想把这个proxy删除掉,因为点击移除失败,我尝试在zk里把那个proxy删除掉。删除后,我重启了dashboard发现信息还在dashboard里面能查到。那么再我想问一下这个信息是存储在哪里的?
配置文件
压测命令
./redis-benchmark -p 19200 -h 10.100.90.20 -n 100000000 -r 10000000000 -c 512 -d 100 -t get,set,mset -q
压测
场景1
在两台机器同时向一个proxy压,并行启动两个redis-benchmark。 其中一个运行正常,另一个会报如下错误
场景2
在同一台机器(codis proxy所在机器)启动3个redis-benchmark。 前两个不会报错,第三个会报如下错误。
问题
这个是否是配置有问题导致的还是proxy升级后有的问题。以前测试codis2.0的时候是没有这个问题的。