并非是商业生产环境,只是小环境测试,没钱来换服务器升级,
一下子很多短链接并发来,都是 INSERT,一下子 MySQL 响应就慢了,看到 Threads_connected 上到了 800,然后就缓不过来一阵子,最后是发出 INSERT 的程序蹦掉了。
MySQL 是否有不折腾,让这些并发量大的 INSERT 做个 cache,缓着先,跟着适合的节奏慢慢写?
1
xuanbg 2020-10-14 17:58:32 +08:00
没有,但大家都用消息队列削峰去谷。
|
2
1018ji 2020-10-14 18:01:07 +08:00
INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE] 这些参数试试
|
3
yph007595 2020-10-14 18:04:27 +08:00
可否在发出 INSERT 的程序端做一下缓存。
|
4
BBCCBB 2020-10-14 18:07:18 +08:00
放消息队列然后批量消费批量 insert.
|
5
XDJI 2020-10-14 19:27:39 +08:00 1
不过你们 tps 多少呀 之前我基准测试了下一台 4v16g 的随机读写 64 线程 tps 能到 2000+
|
6
yuudachiPoi 2020-10-14 19:32:20 +08:00
消息队列。
|
7
lbp0200 2020-10-14 19:46:57 +08:00 via iPhone
如果是 PHP 的话,就是 800 个进程,一个进程 10 兆,需要 8G 内存
|
8
fredcc 2020-10-14 20:10:30 +08:00
插入锁表了么,上有序队列成本不低啊
|
9
dorothyREN 2020-10-14 20:12:23 +08:00
要不借你个数据库做测试?
|
10
onepunch 2020-10-14 20:27:41 +08:00
你的系统怕不是有慢查询吧
|
11
Jooooooooo 2020-10-14 20:29:05 +08:00
写入的地方慢一点呗
|
12
jones2000 2020-10-14 23:56:46 +08:00
写一个数据库写入的 api, 所有数库写入都调用这个 api 写入, 不要直接连接数据库写入了。
|
13
chenqh 2020-10-15 00:27:44 +08:00 via Android
@lbp0200 php 内存这么低?我现在的 py 进程一个 50m,这还是我去掉 jinja2 cache 的结果
|
14
jorneyr 2020-10-15 09:03:21 +08:00
加个 Nginx,设置相应 API 的 QPS 限制就好了。
|
16
zhangysh1995 2020-10-15 15:31:16 +08:00
二楼 +1 票 @1018ji
|
17
haosamax 2020-10-15 17:29:45 +08:00
#4 批量插吧
|
18
gaius 2020-10-15 21:40:13 +08:00 via Android
不怕丢数据就内存队列,批量插
|