問題タブ [high-load]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
3 に答える
279 参照

java - Java-mysql 高負荷アプリケーションのクラッシュ

HTML スクレーパーに問題があります。Html-scraper は、HtmlUnit を使用して Java で記述されたマルチスレッド アプリケーションで、デフォルトでは 128 スレッドで実行されます。簡単に言うと、次のように動作します: 大きなテキスト ファイルからサイトの URL を取得し、URL に ping を実行し、アクセス可能であれば、サイトを解析し、特定の html ブロッ​​クを見つけ、html コードを含むすべての URL とブロック情報をデータベース内の対応するテーブルに保存し、次の場所に移動します。次のサイト。データベースは mysql 5.1 で、4 つの InnoDb テーブルと 4 つのビューがあります。テーブルには、テーブル結合で使用されるフィールドの数値インデックスがあります。また、CodeIgniter で記述された、解析されたデータを閲覧および検索するための Web インターフェイス (検索にはデルタ インデックス付きの Sphinx を使用します) もあります。

サーバー構成:

いくつかの mysql 設定:

次のオプションを除いて、デフォルトのパラメーターを使用して Java マシンを実行します。

p>

データベースが空の場合、スクレイパーは 1 秒間に 18 個の URL を処理し、十分に安定していました。しかし、2 つの弱点の後、urls テーブルに 384929 レコード (処理されたすべての URL の約 25%) が含まれ、8.2Gb を使用すると、Java アプリケーションの動作が非常に遅くなり、1 ~ 2 分ごとにクラッシュします。その理由は、増加する負荷を処理できないmysqlにあると思います(2+4*BLOCK_NUMBER処理されたURLごとにクエリを実行するパーサー、10分ごとにデルタインデックスを更新するスフィンクス、1人だけが使用するため、Webインターフェイスは考慮しません) 、おそらくインデックスの再構築が非常に遅いですか?しかし、mysql とスクレイパーのログ (キャッチされなかったすべての例外も含まれます) は空です。あなたはそれについてどう思いますか?

0 投票する
2 に答える
105 参照

asp.net - asp.net を使用して画像を効果的に配信する方法

私のasp.netアプリケーションは、画像を作成してメモリに保存し、ユーザーに画像を表示します。標準の HttpHandler は、プールからスレッドを取得して各画像を配信します。効率的ではないと思います。asp.net は HttpHandler よりも効果的に画像を配信できますか?

更新: 画像は一時的なものです。1時間保管します。

0 投票する
0 に答える
2253 参照

c# - 負荷テスト中の CommunicationException

私は wcf アプリケーションに取り組んでいますが、奇妙なタイムアウト動作が見られるようになりました。問題が wcf に関連しているかどうかを判断するために、実際のアプリケーションと同じ構成で foo アプリケーションを作成しました。

クライアント アプリケーション コードは次のとおりです。

サーバー アプリケーション コードは、コンソールに送信されたデータのみをログに記録します。

これは app.config ファイルです。

両方のアプリケーションを実行し、クライアント アプリケーションのスレッド数が 100 であれば、すべて問題ありません。しかし、スレッド数を 300 に変更すると、次の例外が発生します。

クアッドコア マシンでポート共有を使用しており、サービスは自己ホスト型です。

これは実際のアプリケーションと同じ問題ですが、タイムアウトが長くなります (2 分半)。InstanceContextMode.Single を使用したサービスが処理できる接続の最大数が 300 であるとは信じられません。デフォルトの ChannelInitializationTimeout 値 (5 に設定) に関する問題について読みましたが、それが問題だとは思いません (別のテストでは、すべてのスレッドに対して 1 つのクライアントを作成して開き、すべてを開始するまで 6 秒待ちました)。スレッド、結果は 10 秒後に同じ例外でした)。おそらく、私は間違った方法で何かを設定しています。

誰かが手がかりやアイデアを持っているなら、彼らは役に立ちます。前もって感謝します。

アップデート

バインディングを netTcp から basicHttpBinding に変更したところ、すべて正常に動作するようになりました (CommunicationExceptions はスローされません)。また、サービスで以前よりも速くメッセージを取得し始めましたが、basicHttpBinding でこの改善が得られた理由を知っている人はいますか?

0 投票する
1 に答える
243 参照

mysql - 大量のデータでより速く実行できますか[MySQL]

次のクエリを最適化する方法はありますか:

ここでの主なタスクは、特定の keyword_id (CURRENT_KID) がある場合、CURRENT_KID と共に記事に属していたすべてのキーワードを検索し、これらのキーワードの使用量に基づいて結果を並べ替える必要があります。

次のように定義されたテーブル:

「explain」の出力が怖い

http://o7.no/J6ThIs

ビッグデータでは、このクエリはすべてを殺す可能性があります:)どうにかして高速化できますか?

ありがとう。

0 投票する
1 に答える
737 参照

redis - 1つのセットのメンバーを他の複数のセットから削除する最良の方法

5万人のメンバーがいるコミュニティがあるとしましょう。したがってcommunity_###_members、ユーザーの50 000のsha1キーで呼び出されるRedisセットが1つあり、ユーザーごとに、user_###_communities上記のコミュニティのsha1ハッシュを含む独自のセットが存在します。

いつか私はコミュニティを削除することにしました。すべてのメンバーを殺すための最良のアルゴリズムは何ですか?

ありがとう。

0 投票する
1 に答える
338 参照

http - HTTP 経由でデータをダウンロードする最も信頼できる方法

リクエストを実行し、最も重要なこととして、HTTP 503 Service Unavailable が発生したり、応答に時間がかかりすぎたりする、非常に負荷の高い HTTP サーバーから正確で完全な応答を取得するための、最も信頼できるプログラミング言語/テクノロジの選択は何ですか。すべてのデータが適切かつ最速でダウンロードされることをほぼ保証する、そのようなサーバーからデータを取得する方法は何ですか?

0 投票する
1 に答える
1295 参照

optimization - LEMP Nginx + php-fpm 高負荷タイムアウトの場合は問題ありません

私はこれらすべてにかなり慣れていませんが、最適化については OCD です。

wordpress 用の LEMP セットアップを実行している Web サーバーを最適化しようとしています。

私のセットアップと比較して驚異的なパフォーマンスを発揮するように見えるため、w3トータルキャッシュの代わりにWPハイパーキャッシュを使用しています

blitz.io を使用して、ドメインで 450 人のユーザーをテストし、450 人から始めて 60 秒間スローします。

これは私の結果です: 5 秒でのスパイクはエラーとタイムアウトです http://i.imgur.com/CdpBz.png

スパイク中の htop: http://i.imgur.com/OhEyS.png

メモリ使用量が少ないことがわかるように、2.5 Ghz の 2 CPU と 2.5 GB メモリを備えた vps です。

nginx: worker_processes 1; worker_connections 1024;

php-fpm: 動的、pm.max_children = 10、pm.start_servers = 2、pm.max_spare_servers = 2、;pm.max_requests = 500 デフォルト値 = 0

nginx worker_processes を変更せずに 2 に増やしました。変更せずに php-fpm の設定をいじりました。私が見るべきものはありますか?

0 投票する
4 に答える
621 参照

mongodb - NoSQL データベース エンジンの選び方

次のパラメータを持つデータベースがあります。

  • 30k レコード、サイズ 7MB
  • 20回の挿入/秒
  • 1000 更新/秒
  • 1000 範囲選択/秒、セカンダリ インデックスごと、それぞれ約 10 行
  • 少なくとも 1 つのセカンダリ インデックスが必要です
  • キーが 75 秒間更新されない場合にキーを期限切れにする何らかのメカニズムが必要です (プログラムによるガベージ コレクターを介して実行できますが、追加の 'last_update' インデックスが必要になり、負荷が追加されます)。
  • 一貫性は必要ありません
  • 耐久性は必要ありません
  • db はメモリに格納する必要があります

今のところ Redis を使用していますが、セカンダリ インデックスがなく、keys index:foo:*遅すぎます。Membase にはセカンダリ インデックスもありません (私の知る限り)。MongoDB および MySQL メモリ エンジンには、テーブル レベルのロックがあります。ユースケースに適合するエンジンは?

0 投票する
3 に答える
5844 参照

php - MySql のデータ取得が遅い

大量の行を持つ MySql テーブルがあります。私は単純なリクエストを行っていますが、かなり高速に動作します。クライアントにデータをフェッチする唯一の問題は、リクエスト自体がわずか 0.3 秒しかかからないのに、約 150 秒間非常に遅いことです。

クライアントと Amazon EC2 MySql インスタンスで php 5.3 + ZendFramework を使用しています。PHP コードと MySql は別のサーバーにあります。

データの取得速度を上げる方法を誰か教えてもらえますか?

0 投票する
2 に答える
81 参照

php - 配列か配列でないか [PHP]

システムに電子メールのブラックリストを実装したいと考えています。そのリストに、配信できないメールを保存したいと思います。

システムがメールを配信できない場合、メールを保存しておき、後で二度と送信しないようにしたいと考えています。

私が見ることができる最も簡単な解決策は2つあります。

受信者が存在しない場合、

  1. ユーザーテーブルでそれについてマークを設定できます
  2. または、特定のテーブルでそのような悪いメールを収集します

2番目の解決策はより簡単に思えますが(簡単にキャッシュできるため)、選択したアプローチについて質問があります...

MyMail 関数では、最初に不良メール リスト (テーブル) で現在のメールを検索する呼び出しを実装し、そこにない場合は送信し、そうでない場合は送信をキャンセルします。

主な質問は何ですか? 1. DB に毎回クエリを作成して、SELECT 1 FROM table WHERE email='checking_email'. もちろん、そのテーブルにはフィールドが1つしかなくemail、そのフィールドにはインデックスが付けられます(一意)。そして、厳密な比較のみを使用します。2.またはそのテーブルの内容を1つの配列にキャッシュし、特定の要素|キーが存在するかどうかを確認するために配列にクエリを作成しますか?

たとえば、1000 万レコードなど、不適切なメーリング リストが長くなる可能性がある場合。

何が速くなりますか?高負荷プロジェクトに適していますか?

PS PHP 配列が大量のメモリを消費することは知っていますが、ニュースレターの送信が開始された場合に備えて多くの DB クエリを実行することもあまり良くありません。

PPS 悪いメールを 1 つの変数にキャッシュします。これが、PHP で配列として存在する理由です。

PPS もう 1 つの方法は、各キャッシュ キーに各不良メールをキャッシュし、そのようなキーがキャッシュに存在するかどうかのみをチェックすることですが、その場合、キャッシュのパージはより複雑になります。これが最善の解決策だと思います。キャッシュ内のキーは、bad_email_ のようになります。そして、その事前送信呼び出しのロジックは次のようになります。必要な電子メールがキャッシュに存在するかどうかを確認し、存在しない場合はデータベースに存在しないかどうかを確認し、そこにも存在する場合、それは適切な電子メールです。システムが悪い電子メールを検出した場合、別のポイントから、DB とキャッシュに同時に保存されます。