为啥这么多人觉得运行PHP的并发可以上1000?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为啥这么多人觉得运行PHP的并发可以上1000?相关的知识,希望对你有一定的参考价值。

参考技术A

关键还在于nginx+php+fastcgi搭建完或搭建过程中的一些优化。

包括使用缓存加速工具,经过优化后web性能有明显的提高。这是我用压力测试工具测试的并发数量。

[root@mysql-DRBD-M webbench-1.5]# webbench -c 8000 -t 30 http://192.168.1.60/index.php
Webbench - Simple Web Benchmark 1.5
Copyright (c) Radim Kolar 1997-2004, GPL Open Source Software.
Benchmarking: GET http://192.168.1.60/index.php
8000 clients, running 30 sec.
Speed=49520 pages/min, 189468 bytes c.
Requests: 24752 susceed, 8 failed.
kimi 17:23:04

为啥python在windows上这么慢?

【中文标题】为啥python在windows上这么慢?【英文标题】:Why is python so much slower on windows?为什么python在windows上这么慢? 【发布时间】:2012-04-14 04:01:30 【问题描述】:

我今天了解了 pystones,所以我决定看看我的各种环境是什么样的。我在裸机上运行 windows 的笔记本电脑上运行了 pystones,得到了这些结果

Python 2.7.2 (default, Jun 12 2011, 15:08:59) [MSC v.1500 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> from test import pystone
>>> for i in range(0,10):
...   pystone.pystones()
...
(1.636334799754252, 30556.094026423627)
(2.1157907919853756, 23631.82607155689)
(2.5324817108003685, 19743.479207278437)
(2.541626695533182, 19672.4405231788)
(2.536022267835051, 19715.915208695682)
(2.540327088340973, 19682.50475676099)
(2.544761766911506, 19648.20465716261)
(2.540296805235016, 19682.739393664764)
(2.533851636391205, 19732.804905346253)
(2.536483186973612, 19712.3325148696)

然后我在我们的一些 linux VM 上运行它,性能提高了 2.7-3.4 倍。所以我在笔记本电脑上启动了我的 vmware Linux VM 并重新运行了相同的测试并得到了以下结果:

Python 2.7.2+ (default, Oct  4 2011, 20:03:08) 
[GCC 4.6.1] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> for i in range(0,10):
...   pystone.pystones()
... 
(1.75, 28571.428571428572)
(1.17, 42735.042735042734)
(1.6600000000000001, 30120.48192771084)
(1.8399999999999999, 27173.913043478264)
(1.8200000000000003, 27472.52747252747)
(1.8099999999999987, 27624.30939226521)
(1.3099999999999987, 38167.938931297744)
(1.7800000000000011, 28089.88764044942)
(1.8200000000000038, 27472.527472527414)
(1.490000000000002, 33557.04697986573)

我不太明白在同一个 windows 下运行的 linux VM 是如何比在 windows 下同一个裸机上运行的 python 快的。

Windows 上的 python 有什么不同,以至于它在裸操作系统上的执行速度比在同一机器上运行 Linux 的 VM 中执行得慢?

更多详情 Windows平台 Win7x64 在两个平台上运行的 32 位 python 在 VMWare 中运行 windows 平台的 32 位 linux VM

【问题讨论】:

取决于同时运行的其他进程。 Python 是否在 VM 和 64 位 Linux 上运行?我看到 Windows 版本是 32 位的。确保您将苹果与苹果进行比较。 似乎 Windows 在处理文件方面不如 Linux 快。请参阅[this other question][1]。 [1]:***.com/questions/1842798/… 【参考方案1】:

在 Windows 10 上遇到类似问题 - 这是因为 Windows Defender

我不得不在 Windows Defender 设置中排除 python 目录和进程并重新启动计算机。

之前:我必须等待大约 20 秒才能运行任何 python 代码 - 现在是毫秒。

【讨论】:

太棒了!我和你有类似的问题,让我在我的Win10上试一下,然后告诉你结果。【参考方案2】:

我无法回答您的问题,但请考虑以下可能会产生影响的事情列表:

您正在使用不同版本的 Python。 “2.7.2+”表示您的 linux Python 是从版本控制签出而不是发布版本构建的。

它们是使用不同的编译器编译的(并且可以想象到具有不同意义的优化级别)。

你没有提到这么多的复制。可以想象,如果你没有,那只是侥幸。

您的 VM 可能计时不准确。

您正在链接 Python 依赖项的不同实现,尤其是 Ignacio Vazquez-Abrams 指出的 libc。

我不知道 pystone 的实际基准是什么样的,但很多事情的工作方式不同——比如 unicode 处理或磁盘 IO 等可能是系统相关因素。

【讨论】:

在写这篇文章之前,我复制了 3 次。是的,不过我没有提到它。【参考方案3】:

您在那个 Windows 机器上运行防病毒软件吗?这或许可以解释。我个人喜欢将 Python、Cygwin 和我的源目录添加到防病毒排除列表中——我认为我得到了一个小而明显的加速。也许这可以解释你的结果。

【讨论】:

【参考方案4】:

对您的启动进行基准测试,但只有一些缓慢的模块需要在 Windows 上进行初始化。每次启动都可以为我节省一秒钟的小技巧:

import os
import mimetypes #mimetypes gets imported later in dep chain

if __name__ == "__main__":
   # stub this out, so registry db wont ever be read, not needed
   mimetypes._winreg = None

另一个缓慢的原因是,多个标准库模块在导入时编译和缓存它们的正则表达式。 re.compile 在 Windows 上看起来很慢

【讨论】:

以上是关于为啥这么多人觉得运行PHP的并发可以上1000?的主要内容,如果未能解决你的问题,请参考以下文章

PHP代码多人开发

为啥在本地运行php,好慢。

VIM很好用吗,为啥那么多人都说很好?我觉得很差,很不方便,求指教

nodejs为啥可以操作文件原理

ab压力测试 http协议中post请求 1000次请求 500并发 为啥请求会增多

为啥我最近从运行 Android 10 的三星设备上收到这么多 InflateException 崩溃?