• 締切済み

メール配信システムの構築について(PHP)

お世話になります。 メール配信システムをPHP+MySQLで構築し、複数のお客様に提供していますが、 現在、複数のお客様が、数百から数千規模の配信を行っており、 送信時間が被ることもあります。そうなると、ASPがなかなか動かなくなってしまいます。 その為、配信するロジックの変更を迫られているのですが、 良いロジックがわからず、困っています。 現在は、送信リクエストがされた時点で、全件の送信処理を行っています。 メール配信は海外のAPIサービスを利用している為、 サーバー負荷はあまりかかっていません。  (サーバーリソース情報確認済みなので、間違いありません) それでも遅いということは、複数のプロセスが継続的に動き続け、 その他のプロセスが動作することを妨害をしていると考えています。 これらの問題を改善するには、どうしたらよいのでしょうか。 案がございましたら、どうかご教示ください。 よろしくお願い致します。

みんなの回答

  • tracer
  • ベストアンサー率41% (255/621)
回答No.4

一般的なメール配信システムにはCUE(予約のようなもの)が用いられると思います。サーバーの稼働状況を見て、正常稼働しているときに送信するような感じです。行き当たりばったりで作ったり、闇雲に質問するのではなくて、まずは専門書に目を通すことを強くお薦めします。 その上で、分からないことを質問されてはいかがでしょうか。

  • oooioi
  • ベストアンサー率29% (16/55)
回答No.3

ロードアベレージは?

回答No.2

>>なかなか動かなくなって とはどういう状況でしょう? サーバ的にはメモリ不足になるのでしょうか?IO待ちになるのでしょうか?CPUが大変なことになるのでしょうか? 問題の切り分けと現状の構成の把握をもう少しいただけませんか?

  • agunuz
  • ベストアンサー率65% (288/438)
回答No.1

>ASPがなかなか動かなくなってしまいます。 ASPというのがわかりませんが(ここはphpカテゴリなので)。 >送信リクエストがされた時点で、全件の送信処理を行っています。 送信予約(キューに溜める)だけしておいて、あとで(cronなどで)キューから逐次送信するのが常道だと思います。cronの起動間隔次第ですが、1回の起動で処理する件数も(溜まりすぎない程度に)抑えるなどします。 というか「外部のAPIを叩く」って自前で送るよりも負荷的にはともかく送信完了までに要する時間は長くなりますよね。自前の送信ならMTAに渡した時点で開放される(あとはMTAがキューを逐次処理する)わけですが、外部APIを叩いて応答を待つとなると外部との送受信だけでも相当にかかりそうに思えます。

関連するQ&A