google-app-engine - 应用引擎flex nodejs worker_connections错误
问题描述
我将 nodejs 服务器部署到 app engine 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
解决方案
根据这个公开问题 1 公开问题 2,增加实例夜间的数量会增加 worker_connections。此外,减少每个实例的内存允许实例以较低的阈值向上扩展。这可能有助于将打开的连接数保持在 4096 以下,这在任何大小的实例中都应该保持不变。您可以将一个实例 SSHing 的 worker_connections 值更改为虚拟机。
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 设置的功能。如果您有任何其他疑问,请随时在此处发布。
推荐阅读
- amazon-ecs - 可以通过 EC2 实例元数据发现 ENI IP 地址吗?
- algorithm - 有没有针对“洪水问题”的有效算法?
- mysql - equi join 的 MySQL 语法错误
- opencv - 是否有替代霍夫圆变换 (GHTG) 的方法可以用于我的困难情况?
- webpack - Webpack 导入默认值似乎与文档不同
- android - MP3 文件接管程序
- eclipse - com.gradle.build-scan 插件未找到
- php - 在 laravel 中调用未定义的函数 ssh2_connect()
- java - 通过java使用DPI压缩pdf大小
- java - 找不到的“javax.servlet.ServletContext”