• ベストアンサー

サーバにかかる負荷はどんなもの?

PDFをサーバにアップ。    ↓ 送信リスト(csv)をアップ。    ↓ 送信開始ボタンを押すと「メール送信×リスト行数(繰り返し)」 といったプログラムを作りました。 プログラム自体は問題無く動くようになりましたが、 サーバへの負荷がどれくらいかかるのか心配になりました。 4MBの添付ファイルを付けて1通メールを送信したところ、 約8秒で送信完了しました。 上記と同じ様なメールを10通まとめて送信したところ、 約75秒で送信完了しました。 元々、依頼者から150通のメールを送るのに「150回同じ作業を繰り返さない事」が目的で制作したものなのですが、150通一気に送ったらサーバにどれほどの負荷がかかるのでしょう? 単純計算でいくと、150通送信完了するのに20分くらいかかりますよね?大丈夫でしょうか…??

  • CGI
  • 回答数6
  • ありがとう数3

質問者が選んだベストアンサー

  • ベストアンサー
回答No.5

> 調べるためのキーワードがわからず自分で検索できなかったので、 「マルチスレッド」でいいと思います。 単にforやforeach(whileでもいいですが)だけですと、 そのループが終わるまでCPU(コンピューター)を占有し続けます。 ですが、そのループの中に、「一定時間、このループ(アプリケーション)を止めて、ほかに必要な処理があればそれを行う」という命令が書いてあれば、その処理を行い、 その後で、またこのループの続きを行うようになります。 そのため、「他の人がメールを送りたい」という接続してきた場合は、サーバーにとっては「他に必要な処理」とみなしますから、150通終わらなくても他の人もメールを送ることが出来ます。 マルチスレッドの実装方法、関数名などは、OSや言語によって違います。 >>1回だけならメーラーでBCCで >メール本文は同一でも、添付ファイルが異なる…といった場合でもBCCで可能なんでしょうか? う~ん、、、これはメーラーやメーリングリストのシステムでは無理かも。。。 はずかしながら、forだけの単純なループで、1kb x 1000通でメールサーバー(テストサーバーですが)を止めた経験もあります(^^;

TMEspion
質問者

お礼

アドバイスありがとうございます。 >マルチスレッド ありがとうございます。 この単語がわかってかなり助かりました。

その他の回答 (5)

  • maura
  • ベストアンサー率46% (48/104)
回答No.6

メールを送信する時の動作は、 1.メールサーバーに接続する 2.メールを送信する 3.接続を切る これを非効率に繰り返しているので遅いのです 接続、切断は、コストがかかりますので 1~3を10回繰り返すのではなく 1をやって 2を10回繰り返して 3で終了する プログラムにするべきです

TMEspion
質問者

お礼

アドバイスありがとうございます。 心配事の正体がわかったので質問を締め切ります。 回答及びアドバイスをして下さった皆様、 ありがとうございました。

回答No.4

送信する側のメールサーバーが自社管理ならそれでいいと思いますが、 受信する側のメールサーバーへの負担も考える必要があるのでは? 150人とはいえ、1回だけならメーラーでBCCで送った方がいいでしょうけど、 そうではなく、わざわざプログラムを作るくらいですから、おそらく何度も送ることになると思います。 4MB~10MB近いメールを常時受信するような状態になるなら、受信する方の負担も結構な量になると思うのですが、どうでしょうか。 通常は、ANo.2の通り、 メールに添付して送るのではなく、ウェブサーバーやFTPサーバーにアップロードして、 メールでアップロードしたことを伝えるだけ、ということをします。 単純計算で20分でも、作り方次第でフリーズする可能性もあります(永久に送信出来ません) for(i=0;i<150;i++){ 送信処理 } まさかとは思いますが、上のような書き方だったらたぶんフリーズします。 厳密にはフリーズやハングではないと思いますが、送信完了まで他の処理が出来なくなります。 たとえば他の人がメールを送信しようとしても、150通送信完了しなければサーバーに接続出来ないなど。 すでに出ていますが、 既存のメーリングリストのシステムを使うのがいいと思います。 一般的なメーリングリストで10MB近い添付ファイルを150人に送れば、アカウント停止が見えてますので、 FMLなど、メーリングリストのシステムを自社サーバーで使うのがいいと思います。 送信完了まで1~2時間以上かかるかも知れませんが、メール送信中にも他の仕事をさせることが出来ますから、自社サーバーで作るならメール送信の負荷はそこまで気にしなくていいと思います。 「メーリングリスト」「メールマガジン」など、それらしい言葉で検索すると適したソフトウェアが見つかると思います。

TMEspion
質問者

補足

アドバイスありがとうございます。 >1回だけならメーラーでBCCで メール本文は同一でも、添付ファイルが異なる…といった場合でもBCCで可能なんでしょうか?メーラーによるのであれば、何ならできますか? >メールを常時受信するような状態になるなら 定期的に送信を行うという話ではないので、おそらく無いと思います。 >まさかとは思いますが 誠にお恥ずかしい話ですが、その「まさか」なのです。 厳密には「foreach」だというのはたぶん、些細な差です。 私の危惧していたのは、その「まさか」だったみたいです。 そうならないようにしたくて対処法を調べたくとも ハング?やそうならないための処理の呼称だとか、 調べるためのキーワードがわからず自分で検索できなかったので、 こういった質問をしました。 「まさか」の方法以外で、そういった心配が無くなる処理の方法を知りたい場合はどう調べたら良いですか? >既存のメーリングリストのシステムを 探してみてはいるんですが、なかなか条件に合ったものが見つかりませんね。もう少し探してみます。

回答No.3

>プログラムはインターネットに公開している自社サーバ上にあります。 ということはメールサーバも業者のネットワーク中にあるでしょうから、そんなに気にしなくてもいいように思います。 5MBを20分で流すと、単純計算で5Mbpsですから。 出来ればトラフィックの少ない明け方に送るとか出来ればベターかも。 顧客要求的に可能なら、ANo.2さんの方法もいいと思います。 サーバの負荷はプログラム次第なのでなんともいえません。動作中にtopで見ればある程度は把握できるでしょう。 メールサーバはCPU的な負荷は、おそらくそれほど高くありません。 ちなみに以前メール配信業をやっていたときは、数十万通配信で数時間動きっぱなし、など普通にやってました。

TMEspion
質問者

補足

アドバイスありがとうございます。 >出来ればトラフィックの少ない明け方に それはメール配信システム等を導入したとしても同じ事が言えるのでしょうか? >サーバの負荷はプログラム次第なので 「動作中にtopで見れば」とありますが、「top」とはなんですか? >数十万通配信で数時間動きっぱなし、など普通にやってました。 心強い意見ありがとうございました。

回答No.2

PDFをベーシック認証した場所にアップ ID,パスワードとURLを送る。 って考えないのは? >4MBの添付ファイルを って受けると側からしたら迷惑な容量ですよ。 >依頼者から150通のメールを送るのに「150回同じ作業を繰り返さない事」が目的で制作したものなのですが、 手作業でって事ですよね? だったらわざわざ新しく作らなくて 既存のメール配信システムを導入すれば良いことでは?

TMEspion
質問者

お礼

アドバイスありがとうございます。 質問内容に対して的外れな感じがややありますが、 まだ方法を選び直す時間があると思うので依頼主と相談してみます。 >既存のメール配信システムを導入すれば良いことでは? できれば既存のメール配信システムを紹介していただけませんか?

TMEspion
質問者

補足

依頼主と相談してみたところ、 まだ方法を変更しても問題無いそうなので、 URLを送る方に切り替えて考えてみようと思います。

回答No.1

心配されているのは、cgiが動くサーバ? それともメールサーバ? 150通のメール送信くらいならどちらもそれほど問題ないと思います。それよりトラフィックのほうが心配です。 PDFはどのくらいの容量ですか? 各サーバはどんなネットワークで繋がっていて、誰が管理しているものですか?

TMEspion
質問者

補足

補足です。 >cgiが動くサーバ? それともメールサーバ? どっちか自分でもよくわからないのですが、 それぞれ問題があるとすればどんな問題がありそうですか? >トラフィック トラフィックとは通信路や網全体に流れるデータの量を表す。何らかの手段でトラフィックを制御することができれば、安定した通信ネットワークを構築できる。 網は何らかの理由で制限されている有限な転送容量を持ち、網の能力以上のデータを網に流すことはできない。能力を超えたトラフィックが発生すると、通信が不安定になったり不能となる。(はてなダイアリー) という事ですが、 送るこちら側の環境が高くて送れたとしても、受信側の環境では受け取る事ができない場合がある。という事なのでしょうか? >PDFの容量 実際に送るPDFがまだ用意できている訳ではないのではっきりとした事は書けないのですが、「1通あたり5MB程度。どんなに大きくても10MB未満」という事です。 >どんなネットワーク、誰が管理 プログラムはインターネットに公開している自社サーバ上にあります。 管理者は私ではないですが、担当の社員が居ます。 こちらの返答が要求に応えられているか自信無いです。

関連するQ&A

  • mb_send_mailによるサーバ負荷について

    mb_send_mailを使って、for文で何百件宛てにメールを送信した場合、サーバへの負荷は相当あるのでしょうか?レンタルサーバなので、やめた方がいいでしょうか。

    • 締切済み
    • PHP
  • 1000件分ループでSendmal送信したサーバー負荷

    CGIで、相手の名前、メールアドレスの1000件くらい登録されているテキストファイルを読み込み それぞれを配列に入れて、その後、メールヘッダーのto:にメールアドレスを代入したり、本文に相手の名前を代入したりしてから、Sendmailで送信をする、というのを登録件数分繰り返すということをすると、サーバーに負荷は、かなりかかるのでしょうか? よく大量の広告メールを送信して、サーバーがダウンしたというのを聞きますが、プログラムは作れますが、いざ使ったらそうなったということになると、ホスティング会社に悪いなぁと思うもので事前に知っておきたいのです。 ちなみにホスティングはlolipopを使っています。多分件数は、増えていっても1万とかにはならないと思います。

  • サーバーに対しての負荷で警告が

    最近契約したサーバーの会社のメールで以下のような文面のメールが来ました。 >お客様の当社ご契約頂いております下記ドメインが、当社共有サーバーの使用率5 >8.2%に達しております。 >このままご使用されますとサーバーダウン及びアクセス遅延障害等が発生する可能性 がございます。 >早急に負荷CGI及び負荷ファイル等の修正をお願い致します。修正頂けない場合は サスペンドさせて頂きますので ご了承ください。 私が心当たりがあったのは、 index.htmlにアクセス解析のkent-webさんのAccessReportを仕込んでいたこと。さらにもう一つ、外国製のレンタルのアクセス解析も入れていたこと(これはJavaScriptによりCGIを呼び出しているようです)。 というような点です。 他は、Flashオンリーサイトなので、index.htmlでクリックするとサブウィンドウが開き、あとはそのFlash上でサイトが展開される仕組みです。 そのサイト内に、Flashで作ったFlashCGI掲示板があります。ローカル環境では、無限ループなどは一切起こらず快適だっただけにまさかこの掲示板スクリプトが原因ではないだろうと思っています。 疑問なのは、常時いずれのCGIも稼動しているはずはないのですが、なぜ58.2%も占有してしまったのかということです。また私がアップしているファイルサイズの総数は5MBにも達していません。 ちょっといきなりサスペンドされては困るので、 臭いなと思われるところをご指摘ください。 また自分で問題が解決したかどうか確認する術はないのでしょうか。 もう一度サーバーにこちらから問い合わせるしかないのでしょうか。

  • サーバーが安価なものを利用している為、サーバーが重く、プログラムを組ん

    サーバーが安価なものを利用している為、サーバーが重く、プログラムを組んでいるホームページは繋がらないときがあります。 その為、メールサーバーとWEBサーバーの運用を分けようと思っています。 それぞれどこかいいところはありますか? VPS or 共有サーバー等で考えています。(VPS、専用、共有サーバー現在全て利用しています) 環境は ドメイン管理はバリュードメイン。 WEBサーバーはサクラの共有を利用中。 メールサーバーは現在はあまり使えない使えるネットのVPSを利用中(どこにしようか一番悩み中です) メールサーバーについて メールはメーリングリストを利用します。メーリングリスト数は10程は使えたらいいですね。使用度は1メーリングリストで1日1000通程です。 後、送信したメールがSPAMに判定されないところですかね。 どうしても共有サーバーで制限がゆるいところは、SPAM関連で問題が多いような気がします。 以上のような感じです。めちゃくちゃ安いところでなくていいんです。 比較的安価でそれでいて問題なく使用できればOKです。(特にメールサーバー) どこかいいところがあれば宜しくお願い致します。

  • サーバーのことでお尋ねします

    HPを制作会社に依頼しました。 そろそろ制作が完了だと思います。 制作会社は私に下記のようなメールを 送り今日から社員旅行にいったようです。 私は、初心者なので良く理解していません。 ●サーバーのご用意はいただけましたか? 私のプランはさくらの「ライト」なので ライトと報告すればいいのでしょうか? ●サーバーのFTP情報をお送りください。 これはドメインのことでしょうか? 私は、初心者なので良く理解していません。 親切な方、丁寧なアドバイスよろしくお願いします。

  • サーバー・サイジング・負荷分散について。

    曖昧な質問で申し訳ないんですが、、 webシステムのサイジングってどうやればよいんですかね? 推奨サーバ構成は・・・?とクライアントに聞かれて困っています。 広告配信システムで、 同時アクセス  300/秒 ←この数字が未知の世界なんです。 ほどは見込んでいます。 かなり重いです。サーバ運営に関しては素人なので、 困っています。最適なサーバ構成案ってどう作ればいいんでしょうか? バナー配信、アクセスカウントが特に重いので、そこだけ切り離して、 web/app(php)サーバ【バナー配信用】×n web/app(php)サーバ【ユーザ転送・統計処理用】 databaseサーバ の構成かな、、、とか思うんですが、いかがでしょうか? 広告配信鯖は特に強い鯖を用意する必要があると思うのですが、 どの程度のマシンが最適でしょうか? また、どのように見積もればよいでしょうか? また複数台に負荷分散した場合、その管理はどの程度 複雑なものになるのでしょうか? 一応テスト環境 (AMD Sempron2600 cpu 1.8G) にて、模擬プログラム(画像配信)をテストしたら、ロードアベレージ4ほどでした。 この手の問題は初めてですので、困っています。 是非是非、よろしくお願い致します。

  • メールサーバの仕様について

    1)配送完了(Message accepted for delivery)までのログではなく、送信先メールサーバまで到達したログまでは調べられるものなのでしょうか? 2)通常送信先メールサーバがエラーメッセージを出ス際は、送信リトライが完了して送られなかったケースになるのでしょうか? 一般的に送信リトライはISPなどでは行っているものなのでしょうか。

  • サーバへのアップローダー設置

    web投稿フォームで90秒(500MBくらい?)ほどの動画を200くらい 閲覧者に送信してもらいたいと考えております。 この作業をするためにはweb制作会社から 「アップローダー」という機能が必要だと言われました。 調べたところ、そのcgiをサーバに設置する必要があるというところまではわかったのですが、 いったいどのアップローダーがいいのか見当がつきません。 何か良いものはありますでしょうか? ちなみにアップロードされたファイルは閲覧者は確認することができないようにして、 こちら側で管理するかたちを取ろうと考えております。 高額でなければ有料でもかまいません。 よろしくお願いいたします。

  • VPSの速度は共有サーバーより早いのでしょうか?

    現在エックスサーバーを使っているのですが、 4分に1回cronを走らせて、約300人(今後増える可能性あり)のデータにアクセス&条件を満たせばメール送信するシステムをアップしようと考えています。 ただ、エックスサーバーのままでは負荷的にまずいのかなぁ、と考えてサーバーを新たに契約しようと考えました。 そこで、前回ここで質問をしたのですが、VPSが良いとの意見をいただきました。 http://okwave.jp/qa/q8409433.html VPSは、エックスサーバーと比べて格段にスピードアップするものなのでしょうか? そうでないならば、エックスサーバーを別サーバー指定で契約しようと思っています。 ご教授いただければ幸いです。

  • 30秒ごとに処理をさせることが可能なサーバーは?

    処理的には簡単なPHPプログラム(数秒で終わるようなもの)を30秒ごとに処理させたいと考えています。 システム的には簡単で、負荷もかからないものなので何とか安価なレンタルサーバーで設定できないかと探しています。 cronによる設定でも以下のような設定にすれば可能であるということも教えて頂いているのですが、このような設定ができる(専用・VPSサーバーでないもの)レンタルサーバー会社が見つかりません。どなたかご存知ないでしょうか? * * * * * コマンド & sleep 30 ; コマンド cron以外にwatchという命令も使えると可能らしいのですが、このような設定ができる(専用・VPSサーバーでないもの)レンタルサーバー会社はあるでしょうか?

    • ベストアンサー
    • PHP