Haproxy 在服务可用情况下返回503
来源:互联网 发布:儿童票卧铺半价算法 编辑:程序博客网 时间:2024/06/05 16:09
1.异常分析:
haproxy集群作为负载代理,底层挂着多个服务程序,20w个用户同时并发请求,在100%请求协议为http情况下服务良好,无异常;当请求为websocket 75% http30%情况下,出现大量503服务不可以异常。
首先查看底层服务器,底层服务器运行平稳,压力未满,对应的503请求未发送到底层服务器,查看haproxy日志,发现大量如下日志:
>> - 503 625990 use 0.000304s
haproxy完全未将请求发送给底层服务器,haproxy接到这个请求后立马就返回503。神奇的现象,首先可以判断为haproxy问题;
到底是什么问题导致了haproxy在底层服务器健康并且压力低的情况下任性的返回503呢,开启纠结之旅,排查服务器配置:
[root@A33 ~]# ulimit -a
core file size (blocks, -c) unlimited
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 515033
max locked memory (kbytes, -l) unlimited
max memory size (kbytes, -m) unlimited
open files (-n) 627680
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) 60240
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited
core file size (blocks, -c) unlimited
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 515033
max locked memory (kbytes, -l) unlimited
max memory size (kbytes, -m) unlimited
open files (-n) 627680
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) 60240
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited
这配置应对如此量的请求完全无压力况且100% http请求的情况下无问题,突然脑袋一霎被神光照亮,websocket为长连接,http连接会释放,难道是haproxy允许最大连接数配置限制了?开启验证之旅
2.问题处理及验证:
查看haproxy配置:maxconn 30000
so funny 3W连接,虽然是haproxy集群,但是请求分发一不均衡,单台超过3w长连接那不就是搞笑么。没话说,调整maxconn到10w,完美解决,不废话了,直接上图,单台haproxy在运行情况下有出现连接超过3w的情况:
阅读全文
0 0
- Haproxy 在服务可用情况下返回503
- haproxy配置验证nova服务高可用
- HAproxy结合Keeplived在centos7上实现高可用
- go语言在高压情况下服务不是很稳定
- Haproxy+Keepalived主主高可用
- haproxy tcp可用配置
- Dynamics 365 Online 如何升级(在有可用更新的情况下)
- [高可用]Ubuntu下Haproxy + Keepalived 实现SuperMap iServer高可用负载均衡实现(1)
- [高可用]Ubuntu下Haproxy + Keepalived 实现SuperMap iServer高可用负载均衡实现(2)
- 基于docker+etcd+confd + haproxy构建高可用、自发现的web服务
- 在正常情况下
- 在Linux下创建低成本、高性能、高可用的Web服务集群系统
- 在Linux下构造高性能、高可用、高可伸缩性的服务集群
- 在Linux下构造高性能、高可用、高可伸缩性的服务集群
- 如何在不定义VO的情况下返回带map的list结果集
- Java里如何实现一个方法在不同情况下“返回”不同的类型变量?
- 在有软键盘的情况下返回键的处理
- effective stl 第21条:总是让比较函数在等值情况下返回false
- dev 禁止单元格编辑
- MFC-Error(1):'/ZI' and '/Gy-' command-line options are incompatible
- 一些寄存器的“小奥秘”
- POJ3321-Apple Tree(dfs序+线段树)
- Flume架构以及应用介绍
- Haproxy 在服务可用情况下返回503
- 比较IOS开发中常用视图的四种切换方式
- 在IDEA中创建Java 9 modules(模块)的Hello World
- 在ubuntu上构建并配置Spark的IDE开发环境
- 王爽 《汇编语言》 读书笔记 十六 直接定址表
- IO复用
- 了解hadoop与分布式系统
- STL-set/multiset容器
- Qt 学习之路 2(12):菜单栏、工具栏和状态栏