【问题标题】:App engine flex nodejs worker_connections error应用引擎flex nodejs worker_connections错误
【发布时间】:2021-02-06 14:49:45
【问题描述】:

我将 nodejs 服务器部署到应用引擎 flex。 我正在使用 websockets,目前预计会有大约 10k 个并发连接。

在大约 2000 个 websockets 连接时,我收到此错误:
[alert] 33#33: 4096 worker_connections are not enough

没有永久的方法可以在 nodejs 运行时编辑 nginx 配置。 实例上的 2k 连接不是很低吗?

我的 yaml 配置文件:

runtime: nodejs
env: flex
service: web

network:
  session_affinity: true

resources:
  cpu: 1
  memory_gb: 3
  disk_size_gb: 10

automatic_scaling:
  min_num_instances: 1
  cpu_utilization:
    target_utilization: 0.6

【问题讨论】:

    标签: google-app-engine google-cloud-platform


    【解决方案1】:

    根据public issue 1 public issue 2 增加实例夜数增加worker_connections。此外reducing 每个实例的内存允许实例以较低的阈值向上扩展。这可能有助于将打开的连接数保持在 4096 以下,这在任何大小的实例中都应该保持不变。您可以将一个实例的 worker_connections 值更改为 SSHing 到 VM。

    Nginx 配置位于 /tmp/nginx/nginx.conf 中,您可以手动更改如下:

    sudo su
    
    vi /tmp/nginx/nginx.conf #Make your changes
    
    docker exec nginx_proxy nginx -s reload
    

    除了上述解决方法之外,还有另一个PIT 用于实现允许用户更改 nginx.conf 设置的功能。如果您有任何其他疑问,请随时在此处发布。

    【讨论】:

    • 我无法真正更改配置,因为“在调试模式下在 VM 中所做的所有更改都是临时的,并且在禁用调试模式时所有更改都会丢失。”所以唯一的解决方案似乎是增加实例的数量:-(我认为我可以使用配置参数 target_concurrent_requests 来做到这一点。
    • @httpete 按照这个issue更改 nginx.conf 设置此时是一个 FR
    • 确实如此。这很烦人,因为现在一个实例我只能处理 2k 个 websocket,如果我必须部署很多实例,这将非常昂贵......
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-08-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-24
    • 2018-06-04
    • 2011-07-28
    相关资源
    最近更新 更多