首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >阻塞Tyk网关中间件导致请求排队

阻塞Tyk网关中间件导致请求排队
EN

Stack Overflow用户
提问于 2021-08-20 21:57:10
回答 1查看 98关注 0票数 0

我在一个带有两个vCPU的AWS t3a.small节点上运行Tyk t3a.small。我们有通过custom_middleware_bundle (Python)实现的自定义逻辑。

我看到了间歇性的错误,可以归结为“单进程/单线程”之类的问题。基本上,当我在Python中间件中执行任何阻塞、长期运行的HTTP请求或为了演示目的--一个time.sleep --时,使用该中间件的整个this和所有其他API都会变得没有响应性,对Tyk网关的请求将排队等待,直到阻塞操作结束。对不使用中间件的其他API的请求正在被成功地处理。我知道Python是单线程的。但是,根据文档,Tyk将自动扩展到所有核心,以处理流量使我假设它至少在多个进程中运行中间件,能够提供某种并发性。

我正在通过/opt/tyk-gateway/tyk --conf=/opt/tyk-gateway/tyk.conf运行Tyk。这是我的tyk.conf

代码语言:javascript
复制
{
  "listen_port": 8080,
  "secret": "XXXXX",
  "template_path": "/opt/tyk-gateway/templates",
  "tyk_js_path": "/opt/tyk-gateway/js/tyk.js",
  "middleware_path": "/opt/tyk-gateway/middleware",
  "use_db_app_configs": false,
  "app_path": "/opt/tyk-gateway/apps/",
  "storage": {
    "type": "redis",
    "host": "127.0.0.1",
    "port": 6379,
    "username": "",
    "password": "",
    "database": 0,
    "optimisation_max_idle": 2000,
    "optimisation_max_active": 4000
  },
  "enable_analytics": false,
  "analytics_config": {
    "type": "csv",
    "csv_dir": "/tmp",
    "mongo_url": "",
    "mongo_db_name": "",
    "mongo_collection": "",
    "purge_delay": -1,
    "ignored_ips": []
  },
  "health_check": {
    "enable_health_checks": true,
    "health_check_value_timeouts": 60
  },
  "optimisations_use_async_session_write": true,
  "enable_non_transactional_rate_limiter": true,
  "enable_sentinel_rate_limiter": false,
  "enable_redis_rolling_limiter": false,
  "allow_master_keys": false,
  "policies": {
    "policy_source": "file",
    "policy_record_name": "/opt/tyk-gateway/policies/policies.json"
  },
  "hash_keys": true,
  "close_connections": false,
  "http_server_options": {
    "enable_websockets": true,
    "read_timeout": 300,
    "write_timeout": 300
  },
  "allow_insecure_configs": true,
  "coprocess_options": {
    "enable_coprocess": true,
    "coprocess_grpc_server": "",
    "python_path_prefix": "/opt/tyk-gateway"
  },
  "enable_bundle_downloader": true,
  "bundle_base_url": "http://127.0.0.1:8888",
  "global_session_lifetime": 100,
  "force_global_session_lifetime": false,
  "max_idle_connections_per_host": 500,
  "log_level": "info",
  "proxy_default_timeout": 300
}

我们的AWS t3a.small节点有两个vCPU。下面是该容器的CPU特定的Docker设置:

代码语言:javascript
复制
            "CpuShares": 0,
            "NanoCpus": 0,
            "CpuPeriod": 0,
            "CpuQuota": 0,
            "CpuRealtimePeriod": 0,
            "CpuRealtimeRuntime": 0,
            "CpusetCpus": "",
            "CpusetMems": "",
            "CpuCount": 0,
            "CpuPercent": 0,

如何确保Tyk能够在仍然使用Python中间件的同时处理多个并行请求?

EN

回答 1

Stack Overflow用户

发布于 2022-08-17 14:12:54

我认为单线程进程是一个插件警告/理解

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68868440

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档