Postgres 8.4.4 + psycopg2 + Python 2.6.5 + Win7 不稳定性

0 投票
1 回答
676 浏览
提问于 2025-04-16 09:15

在问题的标题中,你可以看到我使用的软件组件组合。

我在一个Postgres服务器上运行着一个简单的10张表的数据库(Windows 7专业版)。我有一些客户端应用程序(用Python和psycopg连接Postgres),它们会在随机的时间间隔连接到数据库,进行一些比较轻的操作。一次只有一个客户端应用在进行较重的操作,而且这些操作通常都在500毫秒以内。其他的客户端应用连接数据库的时间比实际等待数据库执行操作的时间还要长。总的来说,数据库的负载很轻,但读取和写入的负载是均匀分配的。

我的客户端应用程序本身也作为服务器/服务运行。我发现,通常情况下,我可以做到(1)完全关闭Postgres服务器,以及(2)通过键盘中断来杀掉客户端应用,从而损坏数据库。

这里的(1)是指服务器上的Postgres进程中止了,服务需要重新启动。

而(2)是指每当一个客户端在数据库重启后尝试访问数据库时,数据库就会崩溃(假设它已经完成了“恢复模式”的操作)。我需要从数据库服务器中删除旧的数据库/模式,然后每次都重建它,以使其恢复到稳定状态。(在恢复模式后,我尝试了各种组合的清理操作,看看是否能改善稳定性;虽然清理操作可以运行,但当客户端再次尝试访问数据库时,服务器仍然会很快崩溃。)

我不记得在使用“taskkill”杀掉客户端应用时会出现同样的情况——只有在使用键盘中断关闭Python进程时才会出现这种情况。这种情况并不是每次都会发生,但频率足够高,成为了一个主要问题(大约25%)。

我真的很惊讶,居然有客户端的任何操作能够让一个“企业级”的数据库崩溃。有没有人能分享一些提高稳定性的建议,并希望能帮助我理解为什么会发生这种情况?谢谢,M

1 个回答

1

如果你在使用PostgreSQL时遇到问题,可以看看这个页面:

http://wiki.postgresql.org/wiki/Guide_to_reporting_problems

想了解一个真实的bug案例,以及如何提问才能得到有效的帮助和答案,可以阅读这个讨论。

http://archives.postgresql.org/pgsql-general/2010-12/msg01030.php

撰写回答