利用可能な配送レストランを見つけるためにウェブスクレイピングウェブサイトを開発しています。ウェブサイトは最も人気のある配送ポータルを検索し、その結果を1ページに集約して表示します。node.jsを使用したウェブスクレイピングサイト
サイトは4つのdynosでHerokuでホストされています。
http://deliveria.net/#05409-002
ユーザーがウェブサイト上で要求を行う、それは結果を取得するために、約30のHTTP要求を行います。
問題はパフォーマンスです。要求が速くなく、各検索で30件の検索が可能で、1人のユーザーに対して検索が実行されている間にアプリケーションがロックされます。
私はHerokuのdynosを増加させようとした:
heroku scale web=10
そして私は知覚ゲインを感じませんでした。
この種のアプリケーションを拡張するにはどうすればよいでしょうか?
(検索はリアルタイムにする必要があるとして、私は、キャッシュを使用することはできません)
現在のスタック:
- Herokuの
- のNode.js
- 要求を表現モジュール
- EJS
- プッシャー
- Redisの
私はsocket.ioを前に試しましたが、herokuでうまく動作しませんでした。今は、ユーザーにできるだけ早く応答するためにPusherを使用しています。従業員について...それは良いアイデアかもしれません、私はWebスクラップに労働者を作成し、Webのためだけにメインのdynoを維持することができます。 Tks。 –
はい、それが最も重要なことです。メインアプリを起動するだけであれば、改善は感じられません。このために労働者を産まれば、より良いパフォーマンスが保証され、メインアプリをブロックすることはありません。 – alessioalex
ヘロクでワーカーにping(ajax call)をさせるにはどうすればいいですか?ワーカーで高速サーバーを実行できますか?それは目に見えるでしょうか? 私はプッシャーを使用しています。ユーザーが検索リクエストを送信すると、ブラウザがping(ajax呼び出しを行う)して、アプリケーションがチャネル/イベント(プライベートチャットルーム)にメッセージを送信し始めたことを表現します。ユーザーブラウザは同じチャンネル/イベントをリッスンしています。 この「ping」をワーカーにリダイレクトする必要がありますか? –