请问 MySQL 上有什么不折腾的办法,把瞬时并发过来的短链接 INSERT,缓一缓放类似”池“里,进行缓处理?主要是服务器受不了。。。

2020-10-14 17:53:21 +08:00
 uti6770werty

并非是商业生产环境,只是小环境测试,没钱来换服务器升级,
一下子很多短链接并发来,都是 INSERT,一下子 MySQL 响应就慢了,看到 Threads_connected 上到了 800,然后就缓不过来一阵子,最后是发出 INSERT 的程序蹦掉了。

MySQL 是否有不折腾,让这些并发量大的 INSERT 做个 cache,缓着先,跟着适合的节奏慢慢写?

3364 次点击
所在节点    MySQL
18 条回复
xuanbg
2020-10-14 17:58:32 +08:00
没有,但大家都用消息队列削峰去谷。
1018ji
2020-10-14 18:01:07 +08:00
INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE] 这些参数试试
yph007595
2020-10-14 18:04:27 +08:00
可否在发出 INSERT 的程序端做一下缓存。
BBCCBB
2020-10-14 18:07:18 +08:00
放消息队列然后批量消费批量 insert.
XDJI
2020-10-14 19:27:39 +08:00
不过你们 tps 多少呀 之前我基准测试了下一台 4v16g 的随机读写 64 线程 tps 能到 2000+
yuudachiPoi
2020-10-14 19:32:20 +08:00
消息队列。
lbp0200
2020-10-14 19:46:57 +08:00
如果是 PHP 的话,就是 800 个进程,一个进程 10 兆,需要 8G 内存
fredcc
2020-10-14 20:10:30 +08:00
插入锁表了么,上有序队列成本不低啊
dorothyREN
2020-10-14 20:12:23 +08:00
要不借你个数据库做测试?
onepunch
2020-10-14 20:27:41 +08:00
你的系统怕不是有慢查询吧
Jooooooooo
2020-10-14 20:29:05 +08:00
写入的地方慢一点呗
jones2000
2020-10-14 23:56:46 +08:00
写一个数据库写入的 api, 所有数库写入都调用这个 api 写入, 不要直接连接数据库写入了。
chenqh
2020-10-15 00:27:44 +08:00
@lbp0200 php 内存这么低?我现在的 py 进程一个 50m,这还是我去掉 jinja2 cache 的结果
jorneyr
2020-10-15 09:03:21 +08:00
加个 Nginx,设置相应 API 的 QPS 限制就好了。
lbp0200
2020-10-15 10:02:42 +08:00
@chenqh 当然不可能这么低,而且这不是重点,重点是内存满了就会用虚拟内存,然后电脑的性能就十分感人了。
zhangysh1995
2020-10-15 15:31:16 +08:00
二楼 +1 票 @1018ji
haosamax
2020-10-15 17:29:45 +08:00
#4 批量插吧
gaius
2020-10-15 21:40:13 +08:00
不怕丢数据就内存队列,批量插

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/714952

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX