代码之家  ›  专栏  ›  技术社区  ›  Jaehyeon Kim

Rserve内置HTTP服务器中的速率限制?

  •  0
  • Jaehyeon Kim  · 技术社区  · 8 年前

    Rserve(1.8.5) 修改后 .http.request() 从…起 FastRWeb . 使用更新的请求函数没问题,但问题是,每当#并发请求很高时,其中一些/大多数会抛出以下错误。

    警告:fork()在fork\u http()中失败:无法分配内存

    警告:Rserve\u prepare\u child()中的fork()失败:无法分配内存

    这是因为剩余的可用内存不足,有必要以某种方式限制#请求。

    我尝试了几个客户端层(1)Python的requests+hug库,(2)Python的pyRserve+hug库,其中#worker进程由#CPU调整。此外,我还尝试了在单/多容器设置中使用Nginx的反向代理(3)(4)。

    我想按原样使用它将是最有效的选择,但我担心它只是不断尝试分叉并返回错误。(除了快速抛出错误外,使用一些典型指标(如CPU利用率或平均响应时间)自动缩放也不容易。)

    有没有人能告诉我们,是否有一种方法可以在不影响性能的情况下,使用/不使用其他工具来实施速率限制?

    我的Rserve配置大致如下。

    http.port 8000
    socket /var/rserve/socket
    sockmod 0666
    control disable
    

    nginx。形态

    worker_processes auto;
    
    events {
        worker_connections 1024;
    }
    
    http {
        upstream backend {
            server 127.0.0.1:8000;
        }
    
        server {
            listen 80;
    
            location / {
                proxy_pass http://backend;
            }
        }
    }
    
    1 回复  |  直到 6 年前
        1
  •  0
  •   Jaehyeon Kim    8 年前

    我被Locust(负载测试工具)误导了,它显示了使用内置HTTP服务器设置Rserve的缓存输出。

    手动调查表明,Rserve+Nginx返回的结果略有改善。