您可以在问题标题中看到我正在使用的软件组件的组合。
我在Postgres服务器(Win 7 Pro)上运行了一个简单的10表数据库。我有客户端应用程序(python使用psycopg连接到Postgres),它们以随机间隔连接到数据库以进行相对较轻的事务。一次只有一个客户端应用程序执行任何类型的繁重交易,这些通常是< 500毫秒。其余的人花在连接上的时间比实际等待数据库执行事务要多。关键是数据库处于轻负载状态,但负载在读写之间平均分配。
我的客户端应用程序本身作为服务器/服务运行。我发现能够(1)完全关闭Postgres服务器,以及(2)通过使用键盘中断终止客户端应用程序来破坏数据库是很常见的。
通过(1),我的意思是服务器上的Postgres进程中止,并且需要重新启动服务。
通过(2),我的意思是,只要客户端在重新启动并且(可能)完成“恢复模式”操作后尝试访问数据库,数据库就会再次崩溃。我需要从数据库服务器中删除旧的数据库/模式,然后每次重建它以使其恢复到稳定状态。 (在恢复模式之后,我尝试了各种组合的吸尘器,以确定是否可以提高稳定性;真空吸尘器运行,但当客户端再次尝试访问数据库时,服务器仍会快速停机。)
我不记得在使用“taskkill”杀死客户端应用程序时看到相同的效果 - 只有在使用键盘中断来关闭python进程时。它不会一直发生,但经常发生这是一个主要问题(25%?)。
真的很惊讶客户端上的任何实际上能够取消“企业级”数据库。任何人都可以分享如何提高稳健性的技巧,并希望帮助我理解为什么会发生这种情况?谢谢,M
答案 0 :(得分:1)
如果你遇到像这样的postgresql问题,你应该阅读这个页面:
http://wiki.postgresql.org/wiki/Guide_to_reporting_problems
有关真正的错误的示例,以及如何提出获得操作和答案的问题,请阅读此主题。
http://archives.postgresql.org/pgsql-general/2010-12/msg01030.php