Bingdada 技术博客Bingdada 技术博客
首页博客SEOGEOAI工具关于
登录注册
Logo

Bingdada 技术博客

专注于SEO搜索引擎优化和GEO生成式引擎优化以及未来人工智能发展趋势的技术博客

快速链接

  • 首页
  • 博客文章
  • 关于我们

联系方式

  • 398848662@qq.com

订阅我们的 Newsletter,获取最新的 SEO 和 GEO 技术资讯。

© 2024 Bingdada 技术博客. All rights reserved.

首页博客AI人工智能扩展PostgreSQL支撑8亿ChatGPT用户:OpenAI的工程实践与深度优化
扩展PostgreSQL支撑8亿ChatGPT用户:OpenAI的工程实践与深度优化
AI人工智能

扩展PostgreSQL支撑8亿ChatGPT用户:OpenAI的工程实践与深度优化

bingdadabingdada
八月 2, 20266 次阅读约 13 分钟阅读
快速回答

OpenAI工程团队详细解析如何将PostgreSQL扩展至支撑8亿ChatGPT用户,每秒处理数百万次查询。文章深入探讨了单主架构、MVCC优化、查询调优、缓存策略、自动清理等关键技术,并总结了大规模数据库扩展的实战经验。

核心要点
  • 引言:当PostgreSQL遇上全球8亿用户
  • 初代架构的裂缝
  • 扩展PostgreSQL至百万级QPS
  • 减少主实例负载
  • 查询优化
目录

目录

  • 引言:当PostgreSQL遇上全球8亿用户
  • 初代架构的裂缝
  • 扩展PostgreSQL至百万级QPS
  • 减少主实例负载
  • 查询优化
  • 只读副本管理
  • 自动清理调优
  • 缓存策略优化
  • 监控与告警体系
  • 关键经验总结
  • 未来展望
  • 结语

引言:当PostgreSQL遇上全球8亿用户

在人工智能浪潮席卷全球的今天,OpenAI的ChatGPT和API服务已成为数亿用户日常依赖的工具。而在这背后,一个看似“传统”的数据库系统——PostgreSQL,正默默支撑着每分钟数百万次的查询请求。本文由OpenAI技术团队成员Bohan Zhang撰写,深入解读了团队如何将PostgreSQL扩展至支撑8亿ChatGPT用户规模,并分享了关键工程优化经验。

多年来,PostgreSQL一直是ChatGPT和OpenAI API等核心产品的关键底层数据系统。随着用户基数快速增长,数据库负载在过去一年内增长了10倍以上,且仍在快速攀升。在优化生产基础设施的过程中,OpenAI团队发现了一个重要洞察:PostgreSQL可以扩展至可靠支持远超此前业界认知的读密集型工作负载。该系统最初由加州大学伯克利分校的科学家团队创建,如今已能通过单个Azure PostgreSQL灵活服务器主实例和近50个跨区域只读副本,支撑全球海量流量。

初代架构的裂缝

ChatGPT发布后,流量以前所未有的速度增长。为支撑这一增长,团队在应用层和PostgreSQL数据库层快速实施了广泛优化:纵向扩展(增加实例规格)和横向扩展(增加只读副本)。这一架构长期运行良好,并随着持续改进,为未来增长提供了充足空间。

单主架构能满足OpenAI规模的需求,这听起来或许令人惊讶。但实际落地并不简单。团队曾多次遭遇由PostgreSQL过载引发的服务事件(SEV),且这些事件往往遵循相似模式:上游问题导致数据库负载突然飙升——例如缓存层故障引发广泛缓存未命中、大量昂贵多表连接查询耗尽CPU、或新功能发布导致的写入风暴。随着资源利用率攀升,查询延迟上升,请求开始超时。重试机制进一步放大负载,形成恶性循环,可能导致整个ChatGPT和API服务降级。

尽管PostgreSQL在读密集型工作负载上扩展良好,但在高写入流量期间仍面临挑战。这主要归因于PostgreSQL的多版本并发控制(MVCC)实现,这使得它处理写密集型工作负载效率较低。例如,当查询更新一个元组甚至单个字段时,整个行都会被复制以创建新版本。在高写入负载下,这会导致显著的写放大。同时,由于查询必须扫描多个元组版本(死元组)以检索最新版本,读放大也随之增加。MVCC还带来了表和索引膨胀、索引维护开销增加以及复杂的自动清理(autovacuum)调优等额外挑战。(关于这些问题的深入探讨,可参考作者与卡内基梅隆大学Andy Pavlo教授合著的博客文章《The Part of PostgreSQL We Hate the Most》,该文已被PostgreSQL维基百科页面引用。)

扩展PostgreSQL至百万级QPS

为缓解这些限制并降低写入压力,团队已迁移并持续将可分片(即可水平分区的)写密集型工作负载迁移至Azure Cosmos DB等分片系统,并优化应用逻辑以减少不必要的写入。同时,团队不再允许在当前PostgreSQL部署中添加新表,新工作负载默认使用分片系统。

即使基础设施不断演进,PostgreSQL仍保持未分片状态,所有写入均由单个主实例处理。主要原因是分片现有应用工作负载将极为复杂且耗时,需要修改数百个应用端点,可能耗时数月甚至数年。由于工作负载主要为读密集型,且团队已实施广泛优化,当前架构仍为支持持续流量增长提供了充足空间。虽然不排除未来对PostgreSQL进行分片,但鉴于当前和未来增长有足够空间,这并非近期优先事项。

在后续部分,我们将深入探讨团队面临的挑战以及为解决这些问题并防止未来中断而实施的广泛优化,将PostgreSQL推向极限并扩展至每秒数百万次查询(QPS)。

减少主实例负载

挑战:单主架构只有一个写入者,无法扩展写入能力。严重的写入峰值可能迅速使主实例过载,影响ChatGPT和API等服务。

解决方案:团队尽可能减少主实例的负载——包括读和写——以确保其有足够容量处理写入峰值。读流量尽量卸载到副本上。但某些读查询必须保留在主实例上,因为它们是写入事务的一部分。对于这些查询,团队专注于确保其高效且避免慢查询。对于写流量,已将可分片的写密集型工作负载迁移至Azure Cosmos DB等分片系统。较难分片但仍产生高写入量的工作负载迁移时间较长,该过程仍在进行中。团队还积极优化应用以减少写入负载,例如修复导致冗余写入的应用错误,并在适当情况下引入延迟写入以平滑流量峰值。此外,在回填表字段时,严格执行速率限制以防止过度写入压力。

查询优化

挑战:团队识别出PostgreSQL中若干昂贵查询。过去,这些查询的突然流量激增会消耗大量CPU,拖慢ChatGPT和API请求。

解决方案:团队采取多管齐下的策略。首先,通过慢查询日志和性能监控工具,系统性地识别出最耗资源的查询模式。针对每个高成本查询,团队进行了深度分析,包括执行计划、索引使用情况和数据分布。优化措施包括:添加缺失的索引、重写低效的SQL(例如将子查询转换为JOIN、避免SELECT *)、使用物化视图缓存复杂聚合结果、以及调整PostgreSQL配置参数(如work_mem、shared_buffers)以更好地匹配工作负载。对于某些无法优化的查询,团队通过应用层缓存(如Redis)或查询结果缓存来减少数据库命中次数。同时,团队建立了查询性能基线,并部署自动化告警,以便在查询延迟或资源消耗超过阈值时及时介入。

只读副本管理

挑战:随着只读副本数量增加到近50个,管理这些副本的同步、延迟和故障转移变得复杂。副本延迟可能导致用户看到过时数据,而副本故障则会影响读服务的可用性。

解决方案:团队采用Azure PostgreSQL灵活服务器提供的托管副本功能,并辅以自定义监控和自动化脚本。关键措施包括:

  • 延迟监控:实时监控每个副本的复制延迟(以字节和时间为单位),当延迟超过阈值时触发告警并自动将流量重定向到健康副本。
  • 负载均衡:在应用层实现智能的读/写分离路由。写入请求始终指向主实例,而读请求根据副本的健康状况、延迟和当前负载进行分发。使用一致性哈希确保同一用户的读取请求尽量路由到同一副本,以减少数据不一致的感知。
  • 故障转移:当主实例发生故障时,自动化流程会提升一个副本为新的主实例,并更新DNS记录。团队定期进行故障转移演练,确保流程可靠。
  • 副本预热:新添加的副本需要时间同步数据。团队通过逐步增加流量到新副本,而不是立即全量接入,以避免“惊群效应”和性能抖动。

自动清理调优

挑战:在高写入负载下,MVCC产生的死元组会迅速累积。如果自动清理进程无法及时回收这些死元组,会导致表膨胀、索引效率下降,甚至引发事务ID回卷危机。

解决方案:团队对自动清理进行了精细调优。首先,根据每个表的写入频率和大小,设置不同的autovacuum_vacuum_scale_factor和autovacuum_vacuum_threshold参数,确保活跃写入的表得到更频繁的清理。其次,调整autovacuum_work_mem以加速清理过程中的索引扫描。对于某些超大表,团队采用分区表策略,将数据分散到多个物理分区中,每个分区可以独立进行清理,减少单次清理的负担。此外,团队开发了内部工具来监控死元组比例和表膨胀率,并在接近危险阈值时触发告警或手动干预。对于极端情况,团队会安排维护窗口执行VACUUM FULL或pg_repack来回收物理空间。

缓存策略优化

挑战:缓存层(如Redis或应用内缓存)的故障曾多次引发数据库负载尖峰。当缓存失效时,大量请求直接穿透到数据库,导致查询延迟飙升和连接池耗尽。

解决方案:团队实施了多层缓存策略。第一层是应用内本地缓存(如Caffeine),用于缓存频繁访问且变化不频繁的数据(如用户会话、配置信息)。第二层是分布式缓存(Redis集群),用于缓存数据库查询结果。关键优化包括:

  • 缓存预热:在服务启动或缓存故障恢复后,逐步预热热点数据,而不是一次性加载所有数据。
  • 缓存穿透防护:对于数据库中不存在的数据,也在缓存中设置一个空值(但设置较短的TTL),防止恶意请求或逻辑错误导致数据库被频繁查询。
  • 缓存雪崩防护:为缓存设置不同的过期时间,并加入随机偏移量,避免大量缓存同时过期。
  • 熔断与降级:当数据库负载超过安全阈值时,熔断器会暂时拒绝非关键查询,优先保障核心功能的可用性。

监控与告警体系

挑战:在数百万QPS的规模下,任何微小异常都可能迅速放大为服务中断。传统的监控指标(如CPU、内存)不足以捕捉复杂的性能问题。

解决方案:团队构建了全面的监控与可观测性体系。除了基础指标,还重点监控以下定制化指标:

  • 查询性能:P50、P95、P99查询延迟,按查询类型和来源应用分类。
  • 连接池状态:活跃连接数、等待连接数、连接创建速率。
  • 复制延迟:每个副本的延迟时间和字节数。
  • 死元组比例:每个表的死元组与活元组比率。
  • 缓存命中率:应用缓存和数据库缓存(shared_buffers)的命中率。
  • 慢查询日志:自动捕获并分析执行时间超过阈值的查询。

告警策略采用多级阈值和动态基线。例如,当P99延迟超过基线2倍时触发警告,超过5倍时触发紧急告警。团队还建立了告警疲劳抑制机制,避免重复告警淹没工程师。

关键经验总结

通过上述优化,OpenAI成功将PostgreSQL扩展至支撑8亿用户,每秒处理数百万次查询。以下是团队总结的关键经验:

  1. 单主架构仍可扩展:对于读密集型工作负载,精心优化的单主PostgreSQL架构可以支撑惊人的规模。关键在于将写入负载最小化,并将读流量高效卸载到副本。
  2. 优化是持续的过程:没有任何一次优化能一劳永逸。随着业务发展和数据分布变化,查询模式和性能瓶颈会不断演变。团队需要建立持续的性能评估和优化循环。
  3. 自动化是规模化的基础:手动调优和故障处理在百万级QPS下不可行。自动化监控、告警、故障转移和清理是保持系统稳定的关键。
  4. 理解数据库内部机制:深入理解PostgreSQL的MVCC、清理、锁管理等内部机制,有助于做出更明智的优化决策。盲目调整配置参数可能适得其反。
  5. 缓存是数据库最好的朋友:合理使用多级缓存可以显著降低数据库负载。但缓存策略需要精心设计,避免引入一致性和雪崩问题。
  6. 分片不是唯一出路:在决定分片之前,先评估是否可以通过优化应用逻辑、调整索引、升级硬件等方式解决问题。分片带来的复杂度往往被低估。
  7. 团队协作至关重要:数据库优化需要数据库管理员、后端工程师、SRE和产品团队的紧密合作。建立清晰的沟通渠道和职责划分。

未来展望

尽管当前架构运行良好,OpenAI团队仍在持续探索改进方向。未来可能的工作包括:

  • 进一步减少主实例写入负载:将更多写密集型工作负载迁移至专门的分片系统。
  • 探索PostgreSQL新特性:如逻辑复制、并行查询、分区表增强等,以进一步提升性能和可管理性。
  • 引入AI辅助调优:利用机器学习模型自动推荐索引、调整配置参数和预测负载峰值。
  • 硬件升级:采用更快的存储(如NVMe SSD)和更多内存,减少I/O瓶颈。

结语

PostgreSQL作为一款开源数据库,在OpenAI的工程团队手中展现了惊人的扩展潜力。通过深入理解其内部机制、持续优化应用和数据库配置、构建自动化运维体系,PostgreSQL成功支撑了全球8亿用户的AI服务。这一案例证明了:在合适的场景下,传统关系型数据库依然能够胜任现代互联网规模的挑战。对于正在面临数据库扩展难题的团队,OpenAI的经验提供了宝贵的参考——在追求新技术之前,先充分挖掘现有工具的能力。

本文内容基于OpenAI技术博客原文,由专业SEO/GEO编辑翻译、改写并优化,旨在为中文读者提供深度技术洞察。

目录

  • 引言:当PostgreSQL遇上全球8亿用户
  • 初代架构的裂缝
  • 扩展PostgreSQL至百万级QPS
  • 减少主实例负载
  • 查询优化
  • 只读副本管理
  • 自动清理调优
  • 缓存策略优化
  • 监控与告警体系
  • 关键经验总结
  • 未来展望
  • 结语
黄金广告位 · 限时招商
广告位招商中

把品牌放进读者的阅读流

文章内广告位,高注意力场景,适合新品发布与活动招募。

商务合作

标签

#OpenAI新闻#PostgreSQL扩展#数据库优化#ChatGPT基础设施#单主架构
bingdada

bingdada

SEO & GEO 技术探索者,专注于搜索引擎优化和生成式引擎优化。

相关文章

从试点到价值重塑:五大AI价值模型驱动企业转型
AI人工智能

从试点到价值重塑:五大AI价值模型驱动企业转型

大多数企业仍将AI视为孤立实验,但领先者已将其视为一套价值模型组合。本文深入剖析五大AI价值模型——劳动力赋能、AI原生分发、专家能力、系统依赖管理与智能体运营,揭示企业如何从试点走向系统性价值重塑。

8月 2约 8 分钟阅读
GPT-5.6:前沿智能与极致效率的完美融合
AI人工智能

GPT-5.6:前沿智能与极致效率的完美融合

OpenAI发布GPT-5.6模型家族,旗舰模型Sol以不到一半成本超越Claude Fable 5。通过负载均衡、推测解码、内核优化等创新,实现智能与效率的双重突破,让AI更普惠。

8月 2约 7 分钟阅读
OpenAI如何用AI提升销售效率与客户成功
AI人工智能

OpenAI如何用AI提升销售效率与客户成功

OpenAI销售团队规模一年增长三倍,通过构建GTM Assistant智能助手,将顶尖销售经验系统化,实现销售生产力提升20%,让销售代表每周多出一天时间专注于客户关系。

8月 4约 5 分钟阅读

订阅我们的 Newsletter

获取最新的 SEO 与 GEO 技术资讯。

我们尊重您的隐私,随时可以取消订阅。

评论 ({count}) (0)

登录后即可参与讨论

登录注册
还没有评论,来抢沙发吧