首页 新闻 搜索 专区 学院

net core一秒请求多次就出问题

0
[已解决问题] 解决于 2020-07-07 20:11

一秒钟 同一个用户同时请求1000次,然后会出现10次发送10次邮件,这个问题怎么解决?

Cgrain的主页 Cgrain | 小虾三级 | 园豆:1023
提问于:2020-07-01 23:33

有大佬做过类似的说说看,我也没有经历过这东西,不过我感觉弄压力测试,我做的系统没有一个扛得住,直接报错了 ....

Cgrain 1个月前
< >
分享
最佳答案
0

业务上面做处理,判断队列里是否已有该用户的消息

奖励园豆:5
.Net老中医 | 菜鸟二级 |园豆:213 | 2020-07-02 09:27

我也这样想的,当时大佬说队列特别慢

Cgrain | 园豆:1023 (小虾三级) | 2020-07-02 11:24

@Cgrain: 这东西 肯定用队列呀,就是把所有要发邮件的处理放在队列里,另外一个线程去单独负责发邮件,不慢

winds_随风 | 园豆:116 (初学一级) | 2020-07-02 16:56

@winds_随风: 压力测试,大佬我们现在的逻辑就分两部分了,然后不会很慢吗, 我也不清楚怎么说,了解一下

Cgrain | 园豆:1023 (小虾三级) | 2020-07-02 21:40

@Cgrain: 处理队列线程,队列有内容就处理,没内容就等待500ms,在嫌慢可以用多个线程处理队列

winds_随风 | 园豆:116 (初学一级) | 2020-07-02 21:43
其他回答(2)
0

搞简单点呀,如果是类似按钮触发的,做个简单的防重复点击,点完以后按钮置灰,N秒后可再次点击,现在发送短信啥的都是这套路。这种能过滤大部分重复请求了。
如果是别人通过非正常手段进行多次请求,用队列什么的就好啦,反正是不正常的请求,不需要很高的响应速度。

默卿 | 园豆:4526 (老鸟四级) | 2020-07-02 14:02

压力测试

支持(0) 反对(0) Cgrain | 园豆:1023 (小虾三级) | 2020-07-02 21:39
0

直接ConcurrentQueue,先判断队列是否存在。或者redis这就是一生产消费,很容易的。
数据量大都是队列,哪有说慢的

猫出没 | 园豆:120 (初学一级) | 2020-07-08 14:49
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册