如何确定Web应用程序可以处理的并发用户数?

据我所知,我认为Apache Web服务器通过多处理和multithreading的组合来处理多个请求。 想知道一个运行Web服务器的PHP应用程序,它只是决定可以处理的并发用户的Apache,还取决于PHP应用程序。 如果是,那么到什么程度?

只有一种方法可以通过在实际负载下进行testing来了解

基本上你设置了多个客户端的“bashers”,它们的行为像真正的用户,但可以同时运行大量的会话。 做这个足够长的时间,衡量负载(CPU,MEM,networking,存储),寻找事情破裂 – 通常有一个非常明确的负载点,你开始截断会话,超时等 – 这是你的服务器的限制。

你可以猜测和接近,但它只会被猜测,直到你testing。

哦,顺便说一下,有很多外部公司专门为你进行testing。

http_load,siege,jmeter,ab都是可以让你做一些负载模拟的工具。 但是,如果不编写一些复杂的脚本,你不是很好的testing。 虽然Ian Bicking在wsgitesting中提到了这一点,但是在处理webapps时出现了相同的问题。

当您进行基准testing时,您是否使用本地连接,每个testing都被认为是快速客户端? 他们是否在做post,上传缓慢,打不到网页,testing你的authentication机制,丢失cookie等?

您的Web服务器在瓶颈中扮演着相当重要的angular色,但是,您的应用程序代码,它是如何编写的,它如何与数据库交互,数据库如何对查询,更新等作出反应。 如果交通达到一定水平,那么你期望在基准testing中工作的事情将会以奇怪而神秘的方式突破。 将应用程序服务器的一些负载移到静态内容服务器上会花费更多的时间。

你select的Apache的处理模型也有很多事情要做。 Apache2-prefork是大多数人使用的mod_php,但是,apache2-mpm-worker / fcgid php可以更快。 将静态内容卸载到Varnish或Nginx中也可以减轻您购买时间的应用程序服务器上的部分负载。

一切都有影响的地方。 我见过的大多数web应用程序性能问题都来自Apache后端SQLconfiguration错误或configuration错误。