0

拥有一个应该能够同时处理数百个请求的服务器,我决定在 python 中执行此操作,目前它已启动并运行,现在我愿意优化此代码,因为我想让它像轻量级一样可能的。

具有以下服务器布局:

Incoming connection
       ||
       \/
 _________________
| Handling server |  <|
|_________________|   |
       ||             |
       \/             |
      FORKING --------/
       ||
       \/
 _________________  30 Queries  ______________
| Dataprocessing  | ---------->| MySQL-Server |  
|_________________| <----------|______________| 
       ||             
       \/       
    RESPONDING & closing connection

现在发生的情况是,如果有x 个同时传入的连接,MySQL 服务器会在很短的时间内变得非常慢。

现在我正在寻找一种方法来动态“合并”不同的mysql请求或尽可能减少工作量。

我可以问这个问题的一个例子是:

如何在给定的时间范围内(5 秒?)处理许多 MySQL 请求,同时保持 MySQL 服务器上的工作负载尽可能低

4

1 回答 1

3

没有简单/一刀切的方法来实现这一点,所以我建议您可以考虑采用一些方法来适应您的特定情况。

减轻 MySql 服务器负载的最佳方法是在两者之间使用缓存层,如果这适用于您的情况,但这取决于。

  • 场景 1:大量select查询

如果与查询速率相比,您获取的信息没有频繁更改,则可以使用缓存select

  • 场景 2:很多insert/update语句

这更棘手,如果多个语句涉及更改同一个元组,您可以将它们在内存中缓冲一小段时间(总结它们,根据您的应用程序逻辑您可以做什么),并将聚合结果发送到 MySql 而不是每个.

另一种可能的方法是检查花费时间的是处理实际查询还是建立连接。如果是后者,您可以使用汇集多个连接并重用它们的方法,这也可能会加快速度。

于 2013-05-21T16:24:32.013 回答