質問

Web サーバー上で SQL Server を実行するのは良いことでしょうか、悪いでしょうか、それとも無関心でしょうか?

私は Server 2008 と SQL Server 2005 を使用していますが、それはこの質問には関係ないと思います。

役に立ちましたか?

解決

小規模なサイトの場合、大きな違いはありません。ただし、負荷が増大すると、スケールは非常にひどくなり、予想よりも早くなります。

  • データベース サーバーは、サーバーを「所有」していることを前提に構築されています。メモリと引き換えに速度を確保し、利用可能なすべての RAM を内部キャッシュに簡単に使用します。
  • リソースが不足し始めると、プロファイリングは非常に困難になります。IIS と SQL の両方が問題を抱えていることは明らかですが、ボトルネックがどこにあるのかはあまり明確ではありません。IIS には CPU が必要で、SQL Server には RAM または CPU などが必要です。
  • コードにいくつのレイヤーを含めても、すべてが同じ CPU 上で実行されるため、このコンテキストでは単一レイヤーのアプリケーションの方がより適切に実行され、オーバーヘッドが少なくなりますが、拡張性はありません。
  • セキュリティは非常に悪く、通常は SQL をファイアウォールの内側に隔離します。

余裕があるのであれば、おそらく数ドルを出して、PostgreSQL を使用した 2 台目のサーバーを購入する方がよいでしょう。1 台の IIS サーバーと 1 台の PostgreSQL は、ライセンスコストの関係で、IIS + SQL Server とほぼ同じ費用がかかります...

他のヒント

大規模なショップでは、おそらくこれがベストプラクティスとは考えられないでしょう...ただし、1 秒あたり数百のリクエストを処理しない場合は、両方を 1 つのボックスに入れても問題ありません。

実際、小規模なアプリの場合、データがネットワークを介して送信される必要がないため、バックエンドのパフォーマンスが向上します。すべてはスケールの問題です。

データベースサーバーはメモリを消費することに注意してください。ここで、ハードノックの学校から得た重要な教訓を 1 つ紹介します。 Web サーバーと同じマシンで SQL Server 2005 を実行する場合 (質問で言及したセットアップです)、必ず Sql Server Management Studio にアクセスしてこれを実行してください。:

  1. サーバー インスタンスを右クリックし、[プロパティ]をクリックします
  2. 左側のリストから「メモリ」を選択します
  3. 「最大サーバー メモリ」をサーバーが維持できる値に変更します。

そうしないと、SQL Server が最終的にサーバーの RAM をすべて占有し、永久にハングアップすることになります。これにより、サーバーが多かれ少なかれスパッタリングされ、停止する可能性があります。これに気づいていない場合は、次のことが考えられます。 とてもイライラする トラブルシューティングを行うために。

これを何度もやりました。大企業のようなインフラストラクチャがあり、規模が大きくない場合は実行しないことですが、多くのことには問題ありません。

実際には、Web サーバーと SQL サーバーがどれだけの作業を行っているかによって決まります。

これ以上の情報がなければ、有益な回答が得られるとは思えません。

問題が発生するまでは、同じサーバー上で実行するのが最善だったと思います。そうすれば、事前にお金と時間を節約できます。サイトが成功し、アーキテクチャの変更が必要になったら、すでに元は取れているはずです。

バックアップを忘れずに:)

Web サーバーがパブリックにアクセスできる場合、これはセキュリティの観点から非常に悪い考えです。

ただし、ルーティング、ファイアウォール、ポート、認証など、多くのことが難しくなります。視点、分離は良いです。データベース サーバーを Web サーバー上で実行している場合、Web サーバーが危険にさらされると、SQL サーバーも危険にさらされます。

別々の箱に入れておけば、ハードルが少し上がります。

Web サーバーとデータベース サーバーを保護するためにやるべきことはまだたくさんありますが、必要以上に簡単にする必要があるのでしょうか。

それはサーバーの予想される負荷によって異なります。小規模なサイトの場合は、(正しく構成されていれば) まったく問題ありません。大規模なサイトの場合は、負荷をさまざまなサーバーに分散することを検討することをお勧めします。ウェブサーバー、ファイルサーバー、データベースサーバーなど。

私はこの問題を何度も見てきました。正しい答えは、SQL Server を 1 台のマシンに配置し、IIS (Web サーバー) をもう 1 台のマシンに配置することです。効率的なサーバーをサポートするには適切なドライブ システムと RAM を購入する必要があるため、資金は SQL Server マシンに費やされますが、Web サーバーはミラーリングされたドライブ セットだけで大幅にスケールダウンされ、より安価なマシンになる可能性があります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top