管理高流量连接应用程序的正确方法

时间:2014-03-07 17:28:07

标签: python database postgresql gps twisted

简介

我正在开发一个GPS监听器,这是一个基于扭曲的python的服务,这个应用程序从gps设备接收至少100个连接,并且它没有问题,每个GPS每5秒发送一次数据,包含位置。 (下周必须连接至少200 gps的设备)

数据库

我正在使用一个独特的postgresql连接,这个连接是在为保存和存储信息连接的所有gps设备之间共享的,postgresql使用pgbouncer作为pooler

服务器

我使用小型PC作为服务器,我需要找到一种方法来获得高可用性应用程序而不丢失数据

问题

根据我的应用程序的高流量,我在30分钟后开始显示为没有保存时​​出现内存数据问题,但是在postgres上执行了查询(我已经检查了上次活动)

假解决方案

我有一个重启我的应用程序的脚本,但是这是一个错误的解决方案,因为每次重启我的应用程序时,gps都会断开连接,并且必须重新连接

可行解决方案

我正在考虑基于数据层的高可用性解决方案,每当数据库必须重新启动或发生某些事情时,txt文件都会存储来自gps设备的数据。

为了得到它,我是一个没有唯一连接的东西,我想在一个简单的连接每次必须保存一个数据,然后测试数据库,像一个pooler,然后如果数据库连接错误,txt文件存储它,直到数据库再次正常,另一个进程读取txt文件并将信息发送到数据库

问题

由于每次必须保存此数据以尝试不丢失数据时,我正在考虑应用数据池和单个连接,我想知道

  

每次为此保存数据时,都可以进行单一连接   一种应用程序,知道连接将完成超过100次   每5秒钟?

正如我所说,我的问题太简单了,哪一个是在高流量应用上使用数据库连接的正确方法?每个查询的单个连接或所有应用的共享唯一连接。

查看这个问题的原因是,正在考虑使用考虑内存资源的数据库连接的正确方法。

我不是在寻找解决postgresql问题或性能的方法,只是为了了解使用此类应用程序的正确方法。这就是尽可能多地提供我的应用程序的原因

注意 还有一件事,我看到一个投票结束这个问题,这与没有明确的问题有关,当问题的标题是“问题”并用斜体标记时,现在我已经标记为灰色的通知人员不要读“问题”这个词

非常感谢

1 个答案:

答案 0 :(得分:1)

数据库不会随便丢失数据。在工作描述中,不丢失数据几乎是第一位的。如果它似乎丢失数据,您必须滥用应用程序中的事务。弄清楚你做错了什么并修复它。

在每个交易中建立和断开app和pgbouncer之间的连接对性能不利,但也不是很糟糕;如果这有助于您修复事务边界,那么就这样做。