&引用;冷冻;使用PostgreSQL的Google计算引擎实例

&引用;冷冻;使用PostgreSQL的Google计算引擎实例,postgresql,google-compute-engine,Postgresql,Google Compute Engine,我们在Google compute engine上使用PostgreSQL运行了几个Debian实例,最近我们已经看到了以下问题的多次出现 实例突然变得没有响应。我们无法对其进行ssh,也无法连接到数据库。在此期间,使用telegraf的内部监测也没有运行,没有收集到监测数据 谷歌对CPU活动的监控显示,在此期间CPU的使用率非常低。GCP日志没有显示任何迁移,事实上根本没有显示任何迁移。此外,所有内部日志(例如postgresql日志、syslog、来自定期cronjobs的日志)都显示相同的

我们在Google compute engine上使用PostgreSQL运行了几个Debian实例,最近我们已经看到了以下问题的多次出现

实例突然变得没有响应。我们无法对其进行ssh,也无法连接到数据库。在此期间,使用telegraf的内部监测也没有运行,没有收集到监测数据

谷歌对CPU活动的监控显示,在此期间CPU的使用率非常低。GCP日志没有显示任何迁移,事实上根本没有显示任何迁移。此外,所有内部日志(例如postgresql日志、syslog、来自定期cronjobs的日志)都显示相同的间隔。看起来该实例在那段时间内被冻结了。到目前为止,我们只注意到PostgreSQL实例,因为它们被大量使用

实例运行以下OS和PG变体:

  • Debian 9和第11.9页
  • Debian 9和第10.13页
这些事件通常需要10-15分钟,但有一次是1:20小时。在事件结束时,一些PG进程被OOM杀手杀死,但事件开始前数据库上的活动通常相对较低,CPU使用率和内存使用率也相对较低。所以,当实例再次启动时,它看起来更像是资源有限?如果可能的话

你知道这些问题的原因是什么吗?我们应该寻找什么?正如我提到的,在事件发生期间,Debian的内部日志中通常没有任何信息

更新:为避免误解-相关实例是运行在N1-highmen-8机器(8个CPU和52 GB RAM)上的数据仓库数据库,带有5 TB SSD。或者从互联网上收集数据的数据库-定制机器20个CPU,90 GB RAM和3 TB SSD。所有软件都是最新的

更新2:在实例未响应期间的时间间隔内,syslog、kern.log或消息均未显示任何内容。事故发生后,telegraf立即记录了CPU上的巨大平均负载,但实际上CPU使用量非常小,而Google monitoring显示整个事件期间CPU使用量非常小。事件结束后,总是有一个postgresql进程被OOM killer终止,导致数据库进入恢复模式

至于PG work_mem参数-实例收集指标(20个CPU 90 GB RAM,3 TB SSD)使用8MB-它只插入数据,但通常运行500-1000个连接

第二个实例是数据仓库分析数据库,它使用work_mem 128MB,因为较低的数字会导致大多数查询的查询计划非常糟糕,通常只能运行10-30个连接

在两个数据库上发生事件之前,没有异常数量的连接


更新3:分析数据库今天有几起性质相同的小事件。在最后一次中,我们从GCPGUI停止了实例,并在几分钟后再次启动它。可能是因为迁移到了不同的硬件。由于此操作实例运行正常。

我遇到了类似的问题,但在GCP中有一个MySQL实例,第一个问题与我使用的VM实例的类型有关,我在这个VM实例上有一个f1微型机类型,突然我无法访问ssh。由于这种类型的VM实例只有0.6GB的内存,它很快就耗尽了内存,我将其更改为默认值为e2的介质,这一次它解决了我的问题。 由于实例内存不足,实例中的服务开始失败,这就是我无法访问实例的原因

还有一次,我又开始了类似的问题,但这一次,问题是磁盘,我只有10GB,有一个进程填满了我的磁盘,当一个分区空间不足时,实例再次开始失败。 我只调整了我的磁盘大小,现在我的实例磁盘是20GB,工作正常

话虽如此,我建议根据您的便利增加您的资源,以提高您的性能,因为有您描述的问题是一个很好的指标,表明您现有的机器类型不适合您在该实例上运行的工作负载

如果您的情况与我的情况相同,您可以更改机器类型以调整内存,并且您可以按照这些任务的后续步骤进行操作。请访问以下网站以获取更多信息

更改机器类型

1.-去医院

2.-在“名称”列中,单击您的实例

  • 在“实例详细信息”页面中,完成以下步骤:

    a) 如果尚未停止实例,请单击“停止”按钮停止实例

    b) 实例停止后,单击页面顶部的“编辑”按钮

    c) 在机器配置部分下,选择要使用的机器类型,或创建自定义机器类型以仅增加内存

    d) 保存更改并重新启动VM实例

  • 您可以按照此操作或使用以下命令调整磁盘大小:

    gcloud compute disks resize DISK_NAME --size DISK_SIZE
    
    或使用控制台:

  • 转到页面以查看项目中的分区永久磁盘列表
  • 单击要调整大小的磁盘的名称
  • 在磁盘详细信息页面上,单击编辑
  • 大小字段中,输入磁盘的新大小
  • 单击“保存”将更改应用于磁盘
  • 调整磁盘大小后,您必须确保操作系统可以访问额外的空间

    注意:不要将引导磁盘的大小调整到2 TB以上,因为这是限制

    编辑1 您提到,当实例冻结时,日志不会显示有关问题的信息。 你试过内核日志吗?我认为它可以提供关于这个问题的大量诊断信息

    对于Debian,此日志应位于以下路径中:

    /var/log/kern.log
    
    此外,消息日志也会有所帮助

    /var/log/messages
    
    您可以在此中获取有关日志的更多信息

    而且,我认为它可以