繁体   English   中英

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

[英]Right way to manage a high traffic connection application

介绍

我正在使用GPS侦听器,这是基于双绞线python的服务,此应用程序至少从gps设备接收了100个连接,并且运行正常,每个GPS每5秒钟发送一次数据,其中包含位置。 (下周必须至少连接200 gps设备)

数据库

我正在使用唯一的postgresql连接,此连接在所有用于保存和存储信息的gps设备之间共享,postgresql使用pgbouncer作为池

服务器

我正在使用一台小型PC作为服务器,并且我需要找到一种不丢失数据的高可用性应用程序的方法

问题

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

假溶液

我使用了一个脚本来重新启动我的应用程序,postgres ang pgbouncer,但是这是一个错误的解决方案,因为每次我重新启动应用程序时,gps都断开连接,并且必须再次重新连接

可能的解决方案

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

为了获得它,我是在没有唯一连接的情况下进行的,我正在考虑每次必须保存一个数据时都在一个简单的连接上,然后像缓冲池一样测试数据库,然后如果数据库连接错误,则将txt文件存储起来,直到数据库再次正常,其他进程读取txt文件并将信息发送到数据库

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

知道每次将在5秒内进行100次以上的连接,每次为这种应用程序保存数据时是否可以进行单个连接?

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

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

我并不是在寻找解决postgresql问题或性能的方法 ,只是想知道使用此类应用程序正确方法 这就是为什么要尽可能多地提供我的申请的原因

注意还有一件事,我看到一票赞成关闭这个问题,这与没有明确的问题有关,当该问题的标题为“ question”(问题)并用斜体标记时,现在我将灰色标记为注意人不要读“问题”一词

非常感谢

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

对于每个事务,在应用程序和pgbouncer之间建立和断开连接都不会提高性能,但也不是很糟糕。 如果那是什么可以帮助您解决交易边界,那就去做。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM