とあるデータベースが高負荷になるシステムで,参照系処理を分散させてみようとデータベースのレプリケーションを導入しました.
クライアントとなるWebサーバから接続先のデータベースを選択するルールとして,PHPの乱数を用いて接続先を決定して負荷分散させようという対策を打ってみました.
PHPはCで実装されていますが,その擬似乱数生成器(rand関数)は,「線形合同法」なのだそうです.
線形合同法では,乱数列から次に出現する数を予測できるという欠点があるそうですが,今回の場合は振り分け先を決めるだけの単純な用途なので,問題無さそうです.