我应该专门使用nginx还是将它作为Tomcat的代理(与性能相关)?

我已经计划创build一个网站,将在dynamic内容相当沉重,并希望知道什么是我的webstack的一部分最明智的select。

现在我正在试图决定是否应该在nginx上开发,使用PHP来提供dynamic内容,或者使用nginx作为Tomcat的代理,并使用servlet来提供dynamic内容。

我在Java,JSP和servlet方面拥有丰富的经验,所以这是一个很好的select。 另外,由于它是一种编译语言,因此它的执行速度会比PHP快( 这里的意思是Java的速度比PHP快37倍),并且可以更快地创build网页。

我没有使用PHP的经验,但我的印象是很容易拿起。 它比Java慢,但由于客户端只会与nginx通信,所以我认为向客户端提供dynamic创build的网页将会更快。

考虑到这些事情,我想知道:

  1. 我的假设是否正确?
  2. 瓶颈在哪里发生:创build页面还是将它们提供给客户端?
  3. 如果我打算使用Tomcat来生成dynamic内容(请记住我的网站在这方面会很沉重),用nginx代理Tomcat会给我带来任何nginx的性能好处吗?

我不介意学习PHP,如果它最终会给我最好的performance。 我只是想知道从这个angular度来看最好的select是什么。

我的假设是否正确?

不完全是,设置Tomcat的nginx infront与使用nginx“default”php-fpm通过CGI运行设置nginx几乎是一样的。

您只需使用nginx的优秀静态内容function,而只是从Tomcat转发和返回dynamic内容。

瓶颈在哪里发生:创build页面还是将它们提供给客户端?

与只运行Tomcat相比:可能没有任何地方,如果有任何东西你可以放松Tomcat来做Java部分,而nginx处理所有的东西。 给予或花费额外的时间,需要nginx从Tomcat请求和提供页面。

如果我打算使用Tomcat来生成dynamic内容,那么使用nginx代理Tomcat是否会给我带来任何nginx性能优势?

是。

而且,由于它是一种编译语言,因此它的执行速度会比PHP快(这里的含义是Java的速度比PHP快37倍)

不要相信你在互联网上阅读的所有东西;)

尽pipe解释型语言在编译代码的性能方面总是不足,但操作码caching通常会帮助解决问题,并将代码置于半编译状态,从而极大地加快了速度。

不在编译代码的范围内,但足够接近。

当谈到在Java和PHP之间进行select时,您需要记住以下几点:

  • 他们都是优秀的语言
  • 使用这些语言创build了许多优秀的高性能Web应用程序
  • 他们都有优秀的开发者社区

询问哪一个更好地执行是不可能的,除非你用这两种语言创build相同的应用程序,然后部署和testing它们。 对于99.9999%的团队而言,这当然太昂贵和费时。

当你面对这种select时,你可能会想问一些问题, 而不是 “哪种语言performance更好”:

  • 哪种语言和框架使我的开发团队成为最有成效的人员?
  • 哪种types的应用程序对我的部署团队来说是最容易监控,部署和维护的?

如果答案是PHP,那么尝试用另一种语言编写应用程序以获得预期的性能是愚蠢的。 但是,如果你的团队(即使只是你)对Java更加适应,那么把你的时间尽可能做到你所知道的是一个好主意。

HTH!