Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何利用Java webservice获得Ngnix的优势_Java_Php_Apache_Nginx - Fatal编程技术网

如何利用Java webservice获得Ngnix的优势

如何利用Java webservice获得Ngnix的优势,java,php,apache,nginx,Java,Php,Apache,Nginx,在过去的几年中,我使用ApacheHTTPD服务器作为我的服务器 据我所知,使用Nginx的最大优势是Apache为每个HTTP请求打开不同的线程,这可能会非常快地加载我的服务器,而Nginx使用一些其他技术(事件驱动),以便最大限度地利用服务器的内存和硬件 到目前为止还不错。 我正在构建一个新的web服务,我希望它有大量的HTTP流量,所以我决定使用Nginx 作为一名优秀的Java程序员,与PHP相比,我更喜欢Java,但在我的案例中,使用Java存在一个概念问题: 在所有的文章中,我发现在

在过去的几年中,我使用ApacheHTTPD服务器作为我的服务器

据我所知,使用Nginx的最大优势是Apache为每个HTTP请求打开不同的线程,这可能会非常快地加载我的服务器,而Nginx使用一些其他技术(事件驱动),以便最大限度地利用服务器的内存和硬件

到目前为止还不错。

我正在构建一个新的web服务,我希望它有大量的HTTP流量,所以我决定使用Nginx

作为一名优秀的Java程序员,与PHP相比,我更喜欢Java,但在我的案例中,使用Java存在一个概念问题:

在所有的文章中,我发现在应用程序上使用Java的方法是使用Nginx+Tomcat(或其他JavaServer)+Java包装应用程序-因此,如果我理解正确的话-我不会获得Nginx的优势,因为Tomcat将为每个请求打开一个新线程以使用Java web服务

问题:

  • 我理解对了吗
  • 将Nginx与PHP结合使用是否会为每个请求打开一个新进程,而不是一个新线程

  • 是的,您的理解是正确的,您在这里做的是在tomcat之上添加一个额外的层,因此您不会获得优势,您将获得的唯一优势是服务资产(图像和静态文件),而不将它们传递给apache,这可能会带来一点优势

    为什么使用php有这样的优势:因为当使用nginx而不是将php作为apache(mod_php)的一个模块运行时,我们安装了一个单独的服务器PHPFCGI或PHPFPM,因此它独立于apache生成工作线程或线程的方法

  • 你理解得对。在这种情况下,nginx充当反向代理,tomcat充当应用服务器。在大多数情况下,瓶颈出现在应用层:应用程序本身的应用服务器
  • PHP使用进程而不是线程来执行请求,每个请求都需要一个PHP cgi进程来处理,只有当这个请求完成后,该进程才会被释放来处理其他请求。对于phpfpm,它通常会预分叉许多子进程,比如一个池,我们需要根据机器的实际QPS和stat来计算这个池的大小

  • 好的,让我们明确一点,当使用PHP时,它会为每个请求处理不同的进程,而不是不同的线程?就像我说的,它取决于库和它的配置,比如我使用
    php5 fpm
    ,它确实会产生多个进程(在需要时),但每个进程可以同时处理不同的用户,因此,进程的数量将远低于请求的数量。@MohammadAbuShady:使用Nginx+tomcat(使用Nginx 2到3个tomcat服务器进行负载平衡的服务器)是否有利?1个Nginx和2到3个tomcat?