Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

OnNewMessages中last_msg处理机制,是否会影响请求延时? #1149

Closed
dangding opened this issue Jun 28, 2020 · 3 comments
Closed

Comments

@dangding
Copy link

dangding commented Jun 28, 2020

在OnNewMessage中,针对last_msg的处理,会延后到下一轮DoRead中,进行处理。
请问,当单个socket中,qps较大,且每次DoRead到消息量较多时,是否会增加last_msg的响应时间?

@dangding dangding changed the title OnNewMessages中last_msg为什么选择在当前bthread中执行? OnNewMessages中last_msg处理机制,是否会影响请求延时? Jun 29, 2020
@dangding dangding reopened this Jun 29, 2020
@heyuyi0906
Copy link
Contributor

heyuyi0906 commented Jul 2, 2020

说下我对这个问题的理解哈,这里说的延时应该是指从CutInputMessage得到一个新的msg,到建立的bthread flush之间的延时。
延时来源于两方面:

  1. 一次DoRead得到的所有msg会通过一次bthread_flush被调度执行。
  2. last_msg的处理时机会被延后。当次DoRead的last_msg会在下一次DoRead后被QueueMessage,伴随下一次DoRead产生的msg被flush;若当次DoRead后读不到新的数据,last_msg会在析构时在当前bthread执行ProcessInputMessage。

理论上来说last_msg的延时和一次DoRead的第一个msg是相当的,因此,OnNewMessages中延时主要是上述1)带来的。为什么要这么做,OnNewMessages下面的注释也给出了解释——“To minimize the overhead, scheduling is batched”。

@dangding
Copy link
Author

dangding commented Jul 2, 2020

说下我对这个问题的理解哈,这里说的延时应该是指从CutInputMessage得到一个新的msg,到建立的bthread flush之间的延时。
延时来源于两方面:

  1. 一次DoRead得到的所有msg会通过一次bthread_flush被调度执行。
  2. last_msg的处理时机会被延后。当次DoRead的last_msg会在下一次DoRead后被QueueMessage,伴随下一次DoRead产生的msg被flush;若当次DoRead后读不到新的数据,last_msg会在析构时在当前bthread执行ProcessInputMessage。

理论上来说last_msg的延时和一次DoRead的第一个msg是相当的,因此,OnNewMessages中延时主要是上述1)带来的。为什么要这么做,OnNewMessages下面的注释也给出了解释——“To minimize the overhead, scheduling is batched”。

如果单个socket上qps很高,一次DoRead的数据量比较大呢?延时会不会明显?

PS:用echo_server起了一个服务,在另一台机器上通过rpc_press发请求,当qps较大时,通过brpc的监控页面,可以看到,运行时间越长,延时会越来越大。

@wwbmmm
Copy link
Contributor

wwbmmm commented Aug 29, 2022

PS:用echo_server起了一个服务,在另一台机器上通过rpc_press发请求,当qps较大时,通过brpc的监控页面,可以看到,运行时间越长,延时会越来越大。

这是rpc_press的问题,已经修复:#1763

@wwbmmm wwbmmm closed this as completed Aug 29, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants