Php

我應該專門使用 nginx,還是將其作為 Tomcat 的代理(與性能相關)?

  • March 7, 2011

我計劃創建一個非常重視動態內容的網站,並且想知道對於我的 webstack 的一部分來說什麼是最明智的選擇。

現在我正在嘗試決定是否應該在 nginx 上進行開發,使用 PHP 來傳遞動態內容,或者使用 nginx 作為 Tomcat 的代理並使用 servlet 來傳遞動態內容。

我在 Java、JSP 和 servlet 方面擁有豐富的經驗,所以這是一個加分項。此外,由於它是一種編譯語言,它的執行速度比 PHP 快(這裡暗示Java 比 PHP 快 37 倍左右),並且會更快地創建網頁。

我沒有使用 PHP 的經驗,但是我的印像是它很容易上手。它比 Java 慢,但由於客戶端只會與 nginx 通信,我認為 以這種方式將動態創建的網頁提供給客戶端會更快*。*

考慮到這些事情,我想知道:

  1. 我的假設正確嗎?
  2. 瓶頸出現在哪裡:創建頁面或將它們返回給客戶端?
  3. 如果我要使用 Tomcat 生成動態內容(請記住,我的網站在這方面會很重),使用 nginx 代理 Tomcat 是否會給我帶來任何 nginx 性能優勢?

我不介意學習 PHP,如果它最終會給我最好的性能。我只想知道從這個角度來看什麼是最好的選擇。

我的假設正確嗎?

不完全是,在 Tomcat 前面設置 nginx 與使用 nginx“預設”php-fpm 通過 CGI 執行 PHP 設置 nginx 幾乎相同。

您將利用 nginx 出色的靜態內容功能,同時僅從 Tomcat 轉發和返回動態內容。

瓶頸出現在哪裡:創建頁面或將它們返回給客戶端?

與僅執行 Tomcat 相比:可能無處可去,如果有的話,您將讓 Tomcat 完成 Java 部分,而 nginx 處理其他所有事情。給予或花費 nginx 從 Tomcat 請求和提供頁面所需的額外時間。

如果我要使用 Tomcat 生成動態內容,使用 nginx 代理 Tomcat 是否會給我帶來任何 nginx 性能優勢?

是的。

此外,由於它是一種編譯語言,它的執行速度比 PHP 快(這裡暗示 Java 比 PHP 快 37 倍左右)

不要相信您在網際網路上閱讀的所有內容;)

儘管解釋型語言很可能總是在編譯程式碼的性能方面有所不足,但操作碼記憶體通常會提供幫助,並將程式碼置於半編譯狀態,這往往會極大地加快速度。

不在編譯程式碼的範圍內,但足夠接近。

引用自:https://serverfault.com/questions/243780