2012-03-04 7 views
2

私は今数週間オンラインだった私のサイトでいくつかのスピードの問題にぶち当たっています。 discountasp.netでMySQLを使用しているMVC3サイトです。MVC3のサイトはローカルで高速で実行されています。ライブホストでは非常に遅い

私はサイトの構造を整理し、ローカルマシンでは800-1100ms前後でキャッシングなしでロードするのがかなり速くなっています。奇妙なことは、ライブサイトを試してみると、約15-16秒の時間があり、時には30秒も凍ることがあります。私はweb.configのviewstateをオフにして、ローカルの負荷は1.3秒(奇妙なことにもう少し長く)になり、ライブサイトはほとんどの場合8〜9秒までダウンしていますが、それでもかなり劣ります。

ローカルのVisual StudioサーバーまたはIIS Express間のロード時間が非常に長くなるような理由がある場合は、私の場合に固有の問題は発生しません。ライブサイトは非常に遅く実行されますが、高速です。賢明か従属的な賢明な効果の両方をコード化するものはありませんか?ライブサイトに影響を与える理由は考えられませんが、ローカルではありません。

どのような考えですか?

その他の考え:サブドメインにマップするためにIIS URL書き換えを使用しているサブフォルダとしてサイト設定があります。これまでに問題が発生していると聞いたことはありませんが、これは問題になる可能性がありますか?

Screenshot of the local and live sites running

さらにさらに更新:だから私は何もしない単純なページをアップロードしたが、キャッシングなしで私が持っている最大のテーブルのすべてのレコードを照会します。私のローカルマシンでは平均で約110ms(これはまだ遅いようです...)、ライブサイトでは通常2倍以上です。ページを読み込むためにデータベースに何度もヒットしていると、これがページの読み込み時間に大きく影響することになります。問題がLINQかMySQLかMVC(一般的にはdiscountasp.net)であるかどうかはまだわかりません。 Database query time

+0

まあ依頼する明白なポイントは、あなたがローカルに持っていて、リモートからと遊ぶために何を持っていないハードウェアのセットアップは何かありますか? –

+1

私のローカルマシンはちょうど小さなデスクトップPCで、リモートホストはdiscountasp.netです。これはかなり良い設定をしていると思います。 – boolean

+0

それはちょっと奇妙なことに、別のリクエストが生きています、余分なリクエストは何ですか?どのリクエストに時間がかかるのですか?それはイメージのためのものなのか、タイムアウトなのか? –

答えて

0

私は上記のように、開発用にキャッシングをオフにしていましたが、ローカルマシンでのみキャッシュしました。私は実現しなかったことは問題が、私はそれが遅い速度を修正する手助けをしていると思って、私はオフになったことがないLIVEサーバー、オンになったキャッシングWITH がありました!今のところ意味があります:)

私のキャッシュの問題(IQueryable <>テーブル全体をキャッシュすることになっていたデータセット..> _>)を修正すると、速度が10倍になりました。補助みんなに

ありがとう!

0

私は同じような問題を一度も持ちましたが、ユーザーセッションの初期化が原因でした。多くのオブジェクトが各リクエストでセッション状態に読み書きされていたことが分かりますが、何らかの理由でローカルマシンに影響していませんでした(おそらくInProcモードがローカルに有効になっていました)。

だからあなたのコントローラの一部に属性を追加してみてください、それが物事をスピードアップかどうかを確認:別のノートで

[SessionState(SessionStateBehaviour.Disabled)] 
public class MyController : Controller 
{ 

、私はいくつかのテストを実行し、そして驚くべきことに、それらのオブジェクトのいくつかを読み取ることが速かったですDB 各リクエストでより一度読んだ後にセッション状態にするよりも、プロダクションのセッション状態モードがSqlServerで、DataReaderのプロパティに値を代入するよりも、シリアライゼーション/デシリアライゼーションが明らかに遅いため、ちょっと意味があります。さらに、アセンブリの新しいバージョンをデプロイするときにデシリアライゼーションエラーを避けるという素晴らしい副作用がありました。

ところで、992msでもあまりにも、IMHOです。あなたはそれを少し剃るために出力キャッシュを使用できますか?

+0

私はあなたが本当に(あなたが本当に良い言い訳を持っていない限り)理想的には私が言う200msの下でそれをしたい、あまりにも多くのと同様である992msに同意するものとします。 –

+0

mmm、私はそれをチェックしますが、私はセッション状態に多くをコミットしているとは思わない。とにかく私はそれを調べます。そして、はい、私は992msに同意することは、私は、キャッシングの電源を入れたとき、私はそれ以下にそれを持っていた:)まだあまりにも多くのですが、これはブラウザゲームのためにあるので、それは限られていますので、画面上のコンテンツのほとんどはとにかくDBからプルする必要がありますそれは私がそれを適用することができます。最初のページのロードが完了すると、他のすべての要求は非常に小さなと高速です、それは少しをドラッグ最初のページロードだ=/ – boolean

+0

はあなたがすべてでセッション状態を持つべきではありませんそのMVCを考えます。最初のリクエストではJITリクエストを意味しますが、これは遅いと予想されるためです –

関連する問題