为什么龙卷风会花时间在socket.send(data)上?

时间:2018-08-04 13:40:27

标签: tornado nonblocking

我正在查看Tornado TCP应用程序的配置文件,发现运行事件循环的线程在tornado/iostream.py::write_to_fd的{​​{1}}行中花费了大约20%的时间,并且花费了大约15%的时间。在self.socket.send(data)行的tornado/iostream.py::read_from_fd中。

鉴于这些是非阻塞套接字,为什么这要花费任何时间?在什么情况下需要花费一些时间,我可以对我的应用程序进行任何常见的优化以提高效率吗?

1 个答案:

答案 0 :(得分:1)

即使这些是非阻塞套接字,系统调用仍然涉及将上下文切换到内核模式和从内核模式切换出。除了最大程度地减少此类调用的次数(例如,以较大的批量进行读取和写入操作)之外,您可以采取其他措施来减少这种情况。