我正在研究一个应用程序,其中我可能需要记录到达服务器的所有通信。该功能可以打开或关闭,也可以在发生异常时使用。登录异步龙卷风(python)服务器
无论如何,我担心磁盘I/O操作的阻塞性质及其对服务器性能的影响。在处理请求(主要是POST http请求)时应用的业务逻辑是异步的,因此每个网络或db调用都是异步执行的。
另一方面,我担心线程在等待磁盘IO操作完成时的延迟。记录的消息可以是几个字节到几个KB,但在某些情况下是几MB。当数据写入磁盘时,并没有真正需要暂停线程,http请求肯定可以完成,并且没有理由说ioloop线程在数据写入磁盘时不能在另一个任务上工作。
所以我的问题是:
- 上午我过分担心这个问题?正在记录到标准输出 ,稍后将其重定向到“足够好”的文件?
- 什么是常用的方法,或者你认为最适合登录基于龙卷风的应用程序的方法?即使是简单的日志记录,而不是我上面概述的(极端)情况?
- 这基本上是排队日志消息并从专用线程消耗它们的理想情况吗?如果执行磁盘日志记录的线程正在等待磁盘io操作完成,那么linux是否会将日志记录卸载到不同的线程(如Homer Simpson的“Can not Someone Else Do it?”)内核将该点作为上下文切换的机会?
有任何意见或建议,我们非常感激,
埃雷兹
谢谢,本。这是我正在寻求的那种答案。 – ErezK