开发者社区 > PolarDB开源 > PolarDB 分布式版 > 正文

PolarDB数据库访问量低的时候可以正常连接数据库,访问量高了所有用户都连接不了数据库了,为什么?

PolarDB数据库访问量低的时候可以正常连接数据库,访问量高了所有用户都连接不了数据库了,这是什么原因导致的?报错提示没有权限。报错提示:Warning: mysqli query( ): Couldn't fetch mysqli
数据库连接失败:
php network getaddresses: getaddrinfo failed: Name or service not known

展开
收起
三分钟热度的鱼 2023-12-28 19:57:42 81 0
3 条回答
写回答
取消 提交回答
  • 这个问题可能由以下几个原因导致:

    1. 数据库连接限制
      PolarDB可能会设置最大连接数限制。当访问量增加到一定程度,所有可用的连接可能都被占用,导致新的连接请求无法建立。

    2. 资源耗尽
      高访问量可能导致数据库服务器的CPU、内存或磁盘I/O资源耗尽,这可能会影响新连接的建立和查询的执行。

    3. 网络问题
      报错提示"getaddrinfo failed: Name or service not known"通常表示在解析数据库服务器的域名或者服务名时出现了问题。这可能是由于DNS解析问题、网络波动或者防火墙规则限制等引起的。

    4. 权限问题
      报错提示"Warning: mysqli query( ): Couldn't fetch mysqli"和"数据库连接失败"可能表明存在权限问题。当访问量增大时,如果数据库用户的权限配置不当或者超过了特定的并发限制,可能会导致连接失败。

    以下是一些解决步骤:

    • 检查并调整连接限制
      确认PolarDB的连接数限制,并根据实际需求进行调整。如果需要增加连接数,请联系阿里云技术支持。

    • 监控资源使用情况
      使用阿里云的监控工具或者数据库性能分析工具,检查CPU、内存和I/O资源的使用情况。如果资源耗尽,考虑优化查询性能、增加硬件资源或者调整数据库配置。

    • 排查网络问题
      检查网络连接和DNS解析是否正常,确保能够正确解析和连接到数据库服务器。如果有必要,联系网络管理员或者阿里云技术支持协助排查。

    • 检查和调整用户权限
      确认数据库用户的权限配置是否正确,特别是并发连接数和操作权限。如果存在权限问题,调整用户权限或者联系阿里云技术支持寻求帮助。

    • 优化应用代码
      检查应用程序的数据库连接管理,确保在高访问量下能够正确地打开和关闭数据库连接,避免连接泄漏。

    • 负载均衡和扩展性
      考虑使用负载均衡技术或者扩展数据库实例来分散访问压力,提高系统的稳定性和可用性。

    2023-12-29 15:31:20
    赞同 展开评论 打赏
  • 这个问题可能由以下几个原因导致:

    1. 资源限制
      当数据库访问量增加时,可能会超过数据库服务器的并发连接限制。大多数数据库系统都有最大并发连接数的设置,一旦达到这个限制,新的连接请求就会被拒绝。这可能会导致现有的连接断开或者新的连接无法建立。

    2. 网络问题
      "getaddrinfo failed: Name or service not known" 错误通常表示在解析数据库服务器的域名或IP地址时出现问题。这可能是由于DNS解析问题、网络波动或者防火墙设置导致的。高访问量可能导致网络带宽饱和或网络设备处理能力达到极限,从而影响到DNS解析和网络通信。

    3. 权限问题
      报错提示"Warning: mysqli query(): Couldn't fetch mysqli" 和 "数据库连接失败: php network getaddresses: getaddrinfo failed: Name or service not known" 同时出现,可能是由于在高访问量下,一些用户的连接请求被错误地拒绝或者权限被临时撤销。这可能是由于数据库权限管理配置不当,例如连接数限制、用户权限限制或者会话管理问题。

    以下是一些可能的解决步骤:

    • 检查并调整并发连接限制
      确认数据库服务器的并发连接限制,并根据实际需求进行调整。确保有足够的资源来处理高访问量。

    • 网络诊断和优化
      检查网络连接和DNS解析情况,确保数据库服务器的域名或IP地址可以正确解析。如果有必要,优化网络设备配置或者增加网络带宽。

    • 权限验证和调整
      验证所有用户的数据库连接权限是否正确,并确认在高访问量下这些权限没有被意外更改或撤销。确保所有用户使用的连接信息(如用户名、密码和主机名)都是正确的。

    • 负载均衡和扩展性
      如果访问量持续较高,考虑使用负载均衡技术将数据库请求分散到多个服务器上,或者垂直扩展数据库服务器的硬件资源以应对更高的并发连接需求。

    • 监控和日志分析
      在问题发生时,查看数据库服务器和应用程序的日志文件,以获取更详细的错误信息和上下文。这有助于定位问题的具体原因并采取相应的解决措施。

    2023-12-29 14:22:48
    赞同 展开评论 打赏
  • 十分耕耘,一定会有一分收获!

    楼主你好,这种情况可能是由于数据库连接池资源不足导致的,当访问量高时,连接池中的连接数量可能无法满足所有用户的请求,从而导致数据库连接失败,而且可能会导致同时连接的用户无法正常访问数据库,出现报错提示没有权限。

    要解决这个问题,你可以增加连接池的大小,通过增加数据库连接池的最大连接数,可以提供更多的连接资源给用户。

    还有就是优化数据库连接使用方式,检查代码中是否有数据库连接未释放的情况,确保每次使用完数据库连接后都能及时释放,以免占用连接资源。

    2023-12-28 20:43:40
    赞同 1 展开评论 打赏

PolarDB 分布式版 (PolarDB for Xscale,简称“PolarDB-X”) 采用 Shared-nothing 与存储计算分离架构,支持水平扩展、分布式事务、混合负载等能力,100%兼容MySQL。 2021年开源,开源历程及更多信息访问:OpenPolarDB.com/about

相关电子书

更多
PolarDB+AnalyticDB助力交通物流行业系统升级 立即下载
PolarDB NL2SQL: 帮助您写出准确、优化的SQL 立即下载
云栖大会:开源 PolarDB 架构演进、关键技术与社区建设 立即下载