跳到主要内容

系统配置

配置文件路径:

系统路径
Linux/MacOSlib/python3.11/site-packages/torchdb/data
WindowsLib/site-packages/torchdb/data

配置说明

1. 概述

本配置文件是一个 JSON 格式的配置文件,用于定义NGraphX的运行参数和行为。它包括网络服务设置、数据库连接、缓存配置、支付网关设置、流程设计器组件以及日志记录等多个部分。

2. 网络服务配置 (web)

2.1 工作进程数 (workers)

  • 描述: 定义 web 服务器的工作进程数,影响并发处理能力。
  • 示例: "workers": 1
  • 注意: 根据服务器性能和需求调整。

在Web服务器的配置中,workers参数通常指的是在多进程模式下,服务器可以创建的子进程数量。这个参数在异步服务器模型中同样适用,但它们各自有不同的优势和使用场景。以下是workers在异步服务器模型中增加进程的一些优势:

  1. 提高并发处理能力: 增加workers的数量可以提高服务器处理并发请求的能力。每个进程可以独立处理多个连接,因此更多的进程意味着可以同时处理更多的请求。

  2. 利用多核CPU: 在多核CPU架构下,增加workers可以更好地利用CPU资源。每个进程可以绑定到不同的CPU核心上,从而实现真正的并行处理。

  3. 隔离性: 每个进程都是独立的,拥有自己的内存空间。如果一个进程崩溃或出现异常,它不会影响到其他进程,从而提高了系统的稳定性。

  4. 负载均衡: 当使用多个workers时,服务器可以更智能地分配请求到各个进程,实现请求的负载均衡,避免某些进程过载而其他进程空闲的情况。

  5. 资源分配: 可以根据需要为每个worker分配不同的资源,例如内存限制、CPU亲和性等,以优化性能。

  6. 简化部署和扩展: 使用多个workers可以简化部署和扩展的过程。当需要增加处理能力时,只需增加workers的数量,而不需要对现有代码或架构做大的改动。

  7. 便于监控和管理: 独立的进程更容易被监控和管理。可以对每个进程的资源使用、性能指标等进行单独监控,便于发现问题并进行优化。

  8. 提高开发和维护效率: 在开发和维护过程中,可以针对单个worker进行调试和更新,而不影响整个服务的运行。

然而,值得注意的是,增加workers的数量并不总是意味着性能的提升。过多的进程可能会增加上下文切换的开销,并且可能会因为资源竞争而导致性能下降。因此,合理配置workers的数量,结合实际的硬件资源和业务需求,是实现最优性能的关键。

2.2 请求连接超时 (timeout)

  • 描述: 设置 web 服务器请求的超时时间。
  • 示例: "timeout": 30
  • 注意: 单位为秒,根据业务需求调整。

2.3 最大请求数 (max_requests)

  • 描述: 定义 web 服务器在重启前能处理的最大请求数。
  • 示例: "max_requests": 1000

max_requests配置项在Web服务器的设置中通常用来定义单个工作进程在重启之前能够处理的最大请求数量。这个设置项与并发连接数是两个不同的概念,但它们之间存在一定的联系。

max_requests的作用:

  • 请求处理限制:限制单个工作进程在自动重启之前能够处理的请求数量。
  • 防止内存泄漏:长时间运行的进程可能会积累内存泄漏,通过限制请求数量并周期性重启进程,可以缓解这个问题。
  • 负载均衡:在多进程模式下,这个设置可以帮助实现请求在各个进程之间的均衡分配。

与并发连接数的关系:

  • 并发连接数指的是在同一时间点,服务器能够处理的活跃连接数量。例如,如果有100个并发连接,意味着在同一时间有100个客户端与服务器建立了连接。
  • max_requests并不直接决定并发连接数。即使max_requests设置得很高,如果服务器的其他资源(如文件描述符限制、内存限制等)不足以支持100个并发连接,实际上能够处理的并发连接数可能会低于100。

100并发情况下的配置考虑:

  • 如果你的目标是支持100个并发连接,仅仅设置max_requests是不够的。你需要考虑以下几个方面:
    • 工作进程数:根据服务器的CPU核心数和业务特性,合理配置workers的数量。
    • 资源限制:确保服务器的资源(如内存、文件描述符等)足够支持100个并发连接。
    • 网络配置:网络带宽和延迟也是影响并发能力的重要因素。
    • 应用程序性能:应用程序本身的性能和效率也会影响到并发处理能力。

注意事项:

  • 过高的max_requests设置可能会导致工作进程在处理大量请求时突然重启,影响用户体验。
  • 过低的max_requests设置可能无法充分利用服务器资源,导致频繁的进程重启和上下文切换开销。

在配置max_requests时,应该根据实际的业务需求、服务器硬件资源以及应用程序特性来做出合理的选择。同时,还需要监控服务器的性能指标,根据实际情况调整配置以达到最优的性能表现。

2.4 是否常驻后台运行 (daemon)

  • 描述: 决定 web 服务器是否在后台运行。
  • 示例: "daemon": false
  • 注意: 生产环境中通常设置为true

2.5 是否开启 Gzip 压缩 (gzip)

  • 描述: 是否对响应内容进行 Gzip 压缩。
  • 示例: "gzip": true

2.6 跨域设置 (cors)

  • 描述: 控制是否允许跨域请求。
  • 示例: "cors": {"enable": false, "origins": ["*"]}
  • 注意: "origins"可以设置为具体的域名或 IP,"*"表示允许所有域。

2.7 是否可以通过访问前端 UI 管理流程 (ui)

  • 描述: 是否启用前端 UI 进行流程管理。
  • 示例: "ui": true

2.8 是否可以通过访问/docs查看 OpenAPI 接口描述 (swagger)

  • 描述: 是否启用 Swagger 文档。
  • 示例: "swagger": false

2.9 预览调试或流程 API 调用限制 (share)

  • 描述: 定义每分钟允许的请求次数。
  • 示例: "share": {"limit": 30}

2.10 SSL 安全访问 (ssl)

  • 描述: 是否激活 SSL 安全访问。
  • 示例: "ssl": {"enable": false, "keyFile": "", "certFile": ""}
  • 注意: 激活 SSL 需要提供keyFilecertFile的路径。

2.11 是否开启 JWT 鉴权 (auth)

  • 描述: 是否启用 JWT 鉴权机制。
  • 示例: "auth": false

3. 数据库连接 (database)

3.1 数据库连接 URL (url)

  • 描述: 定义数据库的连接URL,这是一个字符串,包含了访问数据库所需的所有信息,如用户名、密码、主机地址、端口和数据库名称等。

  • 示例:

    • SQLite: 通常SQLite的连接字符串包含数据库文件的路径。

      "url": "sqlite:///mydatabase.db"

      注意:SQLite默认的文件路径是当前工作目录,如果数据库文件不在当前工作目录,需要提供完整路径。

    • MySQL: 使用MySQL作为数据库时,连接字符串包含用户名、密码、主机地址、端口(可选,默认为3306)和数据库名称。

      "url": "mysql+mysqlconnector://user:password@hostname/database_name"
    • PostgreSQL: PostgreSQL的连接字符串同样包含用户名、密码、主机地址、端口(可选,默认为5432)和数据库名称。

      "url": "postgresql+psycopg2://postgres:123456@localhost/postgres"
  • 注意:

    • 确保根据实际使用的数据库类型和地址填写连接URL。
    • 连接字符串中的用户名和密码应该是具有足够权限访问数据库的账户。
    • 如果数据库服务器不在本地主机上,需要替换hostname为实际的数据库服务器地址。
    • 端口号可以根据实际情况指定,如果不指定,将使用每种数据库的默认端口。
    • 连接URL中的参数可能根据不同的数据库和驱动有所变化,需要根据具体的数据库驱动文档进行配置。
注意

社区版只支持 sqlite 数据库。 目前已内置: SqliteMySQLPostgres这三种数据库类型驱动, 也适合那些兼容这三种驱动的数据库类型。

3.2 是否打印查询日志 (echo)

  • 描述: 是否在控制台打印数据库查询日志。
  • 示例: "echo": true

4. 缓存配置 (caches)

4.1 默认内存缓存 (default)

  • 描述: 使用内存作为缓存存储。
  • 示例: "default": {"cache": "aiocache.SimpleMemoryCache"}

4.2 Redis 缓存 (redis_alt)

  • 描述: 使用 Redis 作为缓存存储。
  • 示例: "redis_alt": {"cache": "aiocache.RedisCache", "endpoint": "127.0.0.1"}
  • 注意: 需要配置endpoint, port, timeout等参数。

5. 支付网关设置 (payments)

5.1 Stripe 支付网关的 key (stripe)

  • 描述: Stripe 支付网关的密钥。
  • 示例: "stripe": {"key": "sk_test_..."}

6. 流程连接停靠点配置 (dockDataTypes)

6.1 数据类型与颜色映射

  • 描述: 定义不同数据类型的停靠点颜色。
  • 示例:
    {
    "dtype": "ANY",
    "color": "#751C6DFF"
    }

7. 流程设计器组件配置 (components)

7.1 组件分类与图标

  • 描述: 定义流程设计器可用的组件类别、标题、图标和颜色。
  • 示例:
    {
    "category": "model",
    "title": "语言模型",
    "icon": "brain",
    "color": "#FD0C81FF"
    }

8. 日志记录 (log)

8.1 日志级别与日志文件最大体积 (level, rotation)

  • 描述: 设置日志记录的级别和每个日志文件的最大体积。
  • 示例: "log": {"level": "info", "rotation": "500 MB"}

9. 注意事项

  • 配置文件中的路径、密钥、端口等信息需要根据实际环境进行修改。
  • 在生产环境中,应谨慎开启 Swagger,它可能带来安全风险。
  • 配置文件应定期审查和更新,以适应业务发展和安全需求的变化。

请根据实际需求和环境,合理配置各项参数,以确保服务的稳定性和安全性。