您可以在问题的标题中看到我正在使用的软件组件的组合。
我在 Postgres 服务器(Win 7 Pro)上运行了一个简单的 10 表数据库。我有客户端应用程序(python 使用 psycopg 连接到 Postgres)以随机间隔连接到数据库以执行相对较轻的事务。一次只有一个客户端应用程序执行任何类型的繁重事务,并且通常小于 500 毫秒。他们中的其他人花费更多时间连接而不是实际等待数据库执行事务。关键是数据库处于轻负载状态,但负载在读取和写入之间平均分配。
我的客户端应用程序本身作为服务器/服务运行。我发现能够(1)完全关闭 Postgres 服务器,以及(2)通过使用键盘中断终止客户端应用程序来破坏数据库是很常见的。
通过(1),我的意思是服务器上的 Postgres 进程中止,需要重新启动服务。
通过(2),我的意思是每当客户端在重新启动并且(可能)完成“恢复模式”操作后尝试访问数据库时,数据库再次崩溃。我需要从数据库服务器中删除旧的数据库/模式,然后每次重建它以使其恢复到稳定状态。(在恢复模式后,我尝试了各种真空组合,看看是否提高了稳定性;真空运行,但是当客户端再次尝试访问数据库时,服务器仍然会快速关闭。)
我不记得当我使用“taskkill”杀死客户端应用程序时看到相同的效果 - 只有在使用键盘中断来关闭 python 进程时。它不会一直发生,但经常发生,这是一个主要问题(25%?)。
真正令人惊讶的是,客户端上的任何东西实际上都能够删除“企业级”数据库。任何人都可以分享有关如何提高稳健性的提示,并希望能帮助我理解为什么会发生这种情况?谢谢,米