- 主题:【优化求助】网站Apache进程数过高,主DB负载高
网站用户在月初会有大量的数据上传,
工程反映,在上传数据高峰期:
1、网站的三台Web服务器apache的http进程增多,最高到达300(前端用Ngix做负载均衡)
2、DB1(主服务器)CPU占用到达300%,而其他DB,CPU在100%以下。
目前我推测,一个用户在一次数据上传的过程过程中,由于DB瓶颈,写一份数据耗时较长;
N个用户(可能超过1K)同时上传数据,导致DB负载过高,业务需求上,由于DB数据插入后需要Web实时显示用户数据,由于DB这时响应较慢,导致Apache进程数持续升高,DB负载也恶性循环;
请问版上的各位大拿,针对这样的数据模型,有没有较好(低成本)的优化思路呢?
--
修改:ssmn FROM 119.253.60.*
FROM 119.253.60.*
我理解是单个用户成为热点,导致负载均衡机制失效。我理解得对吗?
【 在 ssmn (金科万岁) 的大作中提到: 】
: 网站用户在月初会有大量的数据上传,
: 工程反映,在上传数据高峰期:
: 1、网站的三台Web服务器apache的http进程增多,最高到达300(前端用Ngix做负载均衡)
: ...................
--
FROM 220.181.126.*
ngix
【 在 ssmn (金科万岁) 的大作中提到: 】
: 网站用户在月初会有大量的数据上传,
: 工程反映,在上传数据高峰期:
: 1、网站的三台Web服务器apache的http进程增多,最高到达300(前端用Ngix做负载均衡)
: ...................
--
FROM 183.14.108.*
nginx替apache?
也不是没想过,现在是大数据写入,怀疑DB那儿也有问题。
hadoop+hive也考虑过,但这个玩意儿实时性跟不上,上传的数据还要很快的
显示给用户。
【 在 zxdong262 的大作中提到: 】
: ngix
--
FROM 119.253.60.*
机制没有失效,用户并发量在月初较大,ngix代理后面的三个web都开始上气不接下气了。
累的。
【 在 kawolu 的大作中提到: 】
: 我理解是单个用户成为热点,导致负载均衡机制失效。我理解得对吗?
:
--
FROM 119.253.60.*
你的写入\读取压力有多大?
写入最大并发量多少?读访问并发量多少?
日总写入量多少?用户读访问峰谷比多少?
主DB和其他DB的读写压力怎么分配的?
硬件什么配置?
好歹给个数量级也好呀……
【 在 ssmn 的大作中提到: 】
: nginx替apache?
: 也不是没想过,现在是大数据写入,怀疑DB那儿也有问题。
: hadoop+hive也考虑过,但这个玩意儿实时性跟不上,上传的数据还要很快的
: ...................
--
FROM 219.142.20.186
专业,捡几个我知道的回答。
读访问并发量高峰期1小时内2W。
日写入总量在300M左右。
DB配置:双CPU 8核 2.3GHZ 32G内存
1主3从,1个主写,3台读。
我有一个简单的想法,在应用和MYSQL之间,加一层redis做数据的暂时存放处,定时向MYSQL
同步,用户要展示的新鲜数据就从redis取,redis只存一天的数据,
过期后定时删除,这样的思路可行否?
这样读取,都有缓存了。
【 在 yourgf 的大作中提到: 】
: 你的写入\读取压力有多大?
: 写入最大并发量多少?读访问并发量多少?
: 日总写入量多少?用户读访问峰谷比多少?
: ...................
--
FROM 119.253.60.*
上传和DB写入分开。
上传的规定格式文件数据,在后台通过异步调度再写入DB。
Web就不应该用来做长时间批处理这一类的任务。
【 在 ssmn 的大作中提到: 】
: 网站用户在月初会有大量的数据上传,
: 工程反映,在上传数据高峰期:
: 1、网站的三台Web服务器apache的http进程增多,最高到达300(前端用Ngix做负载均衡)
: ...................
--
修改:dhcn FROM 124.42.13.*
FROM 124.42.13.*
有几个问题
【 在 ssmn 的大作中提到: 】
: 专业,捡几个我知道的回答。
: 读访问并发量高峰期1小时内2W。
2W request/hour,平均下来应该是秒并发5~6次请求,这不是什么很难满足的事情
持续1小时的2W request/second,这个确实需要下大力量优化
: 日写入总量在300M左右。
是总数据量300MB还是300M条?
如果是300M条的话,这个和2W request/hour访问完全不是一个数量级的,和2W request/second还算匹配
: DB配置:双CPU 8核 2.3GHZ 32G内存
: 1主3从,1个主写,3台读。
如果你都是8核的机器,那么300%的CPU使用还远没到瓶颈,看样子你似乎需要在别的地方找
: 我有一个简单的想法,在应用和MYSQL之间,加一层redis做数据的暂时存放处,定时向MYSQL
: 同步,用户要展示的新鲜数据就从redis取,redis只存一天的数据,
: 过期后定时删除,这样的思路可行否?
如果你需要应付2W r/s,那么redis做数据暂存只是其中一方面,估计你需要多层缓存
如果你只是需要2W r/h,通常情况下优化一下数据库就行
: 这样读取,都有缓存了。
--
FROM 219.142.20.186
多谢~
见笑了,还就是2W request/hour。
但就是这个玩意儿,弄的响应有些捉襟见肘。
我也想简单点,从DB,从PHP(SQL)处优化,
但给PHP加的那点儿数据缓存(Memcache),命中率实在太低。
所以想到搞个redis,考虑是不是能在业务高峰期承担点儿DB负载呢?
【 在 yourgf 的大作中提到: 】
: 有几个问题
: 2W request/hour,平均下来应该是秒并发5~6次请求,这不是什么很难满足的事情
: 持续1小时的2W request/second,这个确实需要下大力量优化
: ...................
--
FROM 119.253.60.*