1秒間に5回くらい、継続的にデータの検索を行うシステムを作っていたのですが、最初はシンプルなロジックで組んだところ、サーバに大きな負荷がかかり、LoadAverageが激増しました。
解決方法
試しにDBアクセスデータを60秒間キャッシュするようにしてみたところ、以下のように、一気に負荷は減りました。
こんな手抜きな感じです
delta = datetime.timedelta(seconds = 60)
while True:
#たまに更新
if dbdata is None or datetime.datetime.now() - lastUpdate > delta:
dbdata = __updateData()
lastUpdate = datetime.datetime.now()
#処理をする
__proc()
やはりDBアクセスは重いので、キャッシュは大事ですね。
慌ててサーバを増強しなくて良かったです。