使用dev_appserver运行GAE go111本地开发响应过慢如何解决
问题根因
该问题是Windows平台下dev_appserver.py针对Go 1.11经典兼容模式的已知原生缺陷:默认配置下logservice会强制等待2秒再执行日志flush操作,你提供的日志中每次请求结束触发的logservice.Flush就是延迟的来源,该问题仅影响本地开发环境,线上GAE运行不受影响。
可行解决方法
- 方法1(推荐,无需修改源码)
启动dev_appserver时追加--disable_logs参数,直接关闭本地logservice的自动flush逻辑,实测修改后接口响应延迟可降至10ms以内,不会影响业务代码运行,也不影响实例本地日志输出。 - 方法2(修改源码保留日志功能)
找到本地gcloud SDK安装路径下的google-cloud-sdk\platform\google_appengine\google\appengine\tools\devappserver2\go\logs.py文件,修改其中的FLUSH_INTERVAL常量,将默认值2改为0.1或更小的数值,重启dev_appserver即可生效。 - 方法3(业务代码适配)
在所有handler函数结束前主动调用appengine.LogFlush(r.Context()),手动触发日志flush跳过2秒等待时间,该方案需要修改业务代码,适配成本较高。
内容的提问来源于stack exchange,提问作者AshF
相关产品推荐
相关产品推荐

