草庐IT

OS X 与 Ubuntu 上的 Python asyncio 性能

coder 2023-09-19 原文

我在 OS X 上遇到 Python asyncio 性能问题。我有 Macbook pro 2015 和 16gb 内存。但无法在 OS X (El Capitan) 上获得与在 Ubuntu 上相同的性能。即使考虑到我在带有 OS X 主机的 VM(流浪者,4GB RAM)中运行 Ubuntu。

使用 wrk 的 OS X 基准测试: wrk -t8 -d 10s -c 300 http://127.0.0.1:9090 ⏎ 运行 10s 测试 @ http://127.0.0.1:9090 8 个线程和 300 个连接 线程统计 Avg Stdev Max +/- Stdev 延迟 628.63us 1.45ms 16.32ms 89.46% 请求/秒 696.05 834.65 5.51k 88.89% 10.08 秒内 19498 个请求,读取 361.78KB 套接字错误:连接 0,读取 20482,写入 0,超时 0 请求/秒:1934.40 传输/秒:35.89KB

Ubuntu:

wrk -t8 -d 10s -c 300 http://127.0.0.1:9090 运行 10s 测试 @ http://127.0.0.1:9090 8 个线程和 300 个连接 线程统计 Avg Stdev Max +/- Stdev 延迟 5.49ms 14.33ms 408.97ms 99.22% 请求/秒 3.58k 1.41k 8.42k 70.91% 10.06 秒内发出 204333 个请求,读取 3.70MB 套接字错误:连接 0,读取 3,写入 977,超时 0 请求/秒:20311.64 传输/秒:376.88KB

服务器代码:https://gist.github.com/ssbb/5f6c2c043880e0e917c3254d06c52a7e

ulimit -a 在 Ubuntu 上:https://gist.github.com/ssbb/e468b3ede5470da25699e4da4506b77c

ulimit -a 在 OS X 上:https://gist.github.com/ssbb/f2a846975069a1d62a313790ad8d26ce

sysctl -a 在 OS X 上:https://gist.github.com/ssbb/c78d5da7ae9e3670175f643309cf9f6b

sysctl -a 在 Ubuntu 上:https://gist.github.com/ssbb/9a00cc3856135369b16ddc0083d2bc88

为什么我对 Ubuntu/OS X 有如此大的区别。我还尝试在 Arch Linux(不是 VM,只是第二个操作系统)上运行这个服务器,结果与 OS X 相同。

Ubuntu 是否有一些针对 TCP 堆栈的“技巧”?

最佳答案

MacOSX 的网络堆栈实现比 linux 慢,这是众所周知的事实。

我不知道为什么 Arch Linux 在你的机器上比 Ubuntu 慢。网络栈是由linux内核本身实现的,相同内核版本的linux发行版应该表现出几乎相同的性能。

关于OS X 与 Ubuntu 上的 Python asyncio 性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38858144/

有关OS X 与 Ubuntu 上的 Python asyncio 性能的更多相关文章

  1. ruby - 通过 RVM (OSX Mountain Lion) 安装 Ruby 2.0.0-p247 时遇到问题 - 2

    我的最终目标是安装当前版本的RubyonRails。我在OSXMountainLion上运行。到目前为止,这是我的过程:已安装的RVM$\curl-Lhttps://get.rvm.io|bash-sstable检查已知(我假设已批准)安装$rvmlistknown我看到当前的稳定版本可用[ruby-]2.0.0[-p247]输入命令安装$rvminstall2.0.0-p247注意:我也试过这些安装命令$rvminstallruby-2.0.0-p247$rvminstallruby=2.0.0-p247我很快就无处可去了。结果:$rvminstall2.0.0-p247Search

  2. ruby-on-rails - date_field_tag,如何设置默认日期? [ rails 上的 ruby ] - 2

    我想设置一个默认日期,例如实际日期,我该如何设置?还有如何在组合框中设置默认值顺便问一下,date_field_tag和date_field之间有什么区别? 最佳答案 试试这个:将默认日期作为第二个参数传递。youcorrectlysetthedefaultvalueofcomboboxasshowninyourquestion. 关于ruby-on-rails-date_field_tag,如何设置默认日期?[rails上的ruby],我们在StackOverflow上找到一个类似的问

  3. ruby-on-rails - openshift 上的 rails 控制台 - 2

    我将我的Rails应用程序部署到OpenShift,它运行良好,但我无法在生产服务器上运行“Rails控制台”。它给了我这个错误。我该如何解决这个问题?我尝试更新ruby​​gems,但它也给出了权限被拒绝的错误,我也无法做到。railsc错误:Warning:You'reusingRubygems1.8.24withSpring.UpgradetoatleastRubygems2.1.0andrun`gempristine--all`forbetterstartupperformance./opt/rh/ruby193/root/usr/share/rubygems/rubygems

  4. ruby-on-rails - 相关表上的范围为 "WHERE ... LIKE" - 2

    我正在尝试从Postgresql表(table1)中获取数据,该表由另一个相关表(property)的字段(table2)过滤。在纯SQL中,我会这样编写查询:SELECT*FROMtable1JOINtable2USING(table2_id)WHEREtable2.propertyLIKE'query%'这工作正常:scope:my_scope,->(query){includes(:table2).where("table2.property":query)}但我真正需要的是使用LIKE运算符进行过滤,而不是严格相等。然而,这是行不通的:scope:my_scope,->(que

  5. ruby - 如何在 Ubuntu 中清除 Ruby Phusion Passenger 的缓存? - 2

    我试过重新启动apache,缓存的页面仍然出现,所以一定有一个文件夹在某个地方。我没有“公共(public)/缓存”,那么我还应该查看哪些其他地方?是否有一个URL标志也可以触发此效果? 最佳答案 您需要触摸一个文件才能清除phusion,例如:touch/webapps/mycook/tmp/restart.txt参见docs 关于ruby-如何在Ubuntu中清除RubyPhusionPassenger的缓存?,我们在StackOverflow上找到一个类似的问题:

  6. Vscode+Cmake配置并运行opencv环境(Windows和Ubuntu大同小异) - 2

    之前在培训新生的时候,windows环境下配置opencv环境一直教的都是网上主流的vsstudio配置属性表,但是这个似乎对新生来说难度略高(虽然个人觉得完全是他们自己的问题),加之暑假之后对cmake实在是爱不释手,且这样配置确实十分简单(其实都不需要配置),故斗胆妄言vscode下配置CV之法。其实极为简单,图比较多所以很长。如果你看此文还配不好,你应该思考一下是不是自己的问题。闲话少说,直接开始。0.CMkae简介有的人到大二了都不知道cmake是什么,我不说是谁。CMake是一个开源免费并且跨平台的构建工具,可以用简单的语句来描述所有平台的编译过程。它能够根据当前所在平台输出对应的m

  7. ruby - rbenv 安装 ruby​​ 校验和不匹配 osx - 2

    我已经在mountainlion上成功安装了rbenv和ruby​​build。运行rbenvinstall1.9.3-p392结束于:校验和不匹配:ruby-1.9.3-p392.tar.gz(文件已损坏)预期f689a7b61379f83cbbed3c7077d83859,得到1cfc2ff433dbe80f8ff1a9dba2fd5636它正在下载的文件看起来没问题,如果我使用curl手动下载文件,我会得到同样不正确的校验和。有没有人遇到过这个?他们是如何解决的? 最佳答案 tl:博士;使用浏览器从http://ftp.rub

  8. 在VMware16虚拟机安装Ubuntu详细教程 - 2

    在VMware16.2.4安装Ubuntu一、安装VMware1.打开VMwareWorkstationPro官网,点击即可进入。2.进入后向下滑动找到Workstation16ProforWindows,点击立即下载。3.下载完成,文件大小615MB,如下图:4.鼠标右击,以管理员身份运行。5.点击下一步6.勾选条款,点击下一步7.先勾选,再点击下一步8.去掉勾选,点击下一步9.点击下一步10.点击安装11.点击许可证12.在百度上搜索VM16许可证,复制填入,然后点击输入即可,亲测有效。13.点击完成14.重启系统,点击是15.双击VMwareWorkstationPro图标,进入虚拟机主

  9. kvm虚拟机安装centos7基于ubuntu20.04系统 - 2

    需求:要创建虚拟机,就需要给他提供一个虚拟的磁盘,我们就在/opt目录下创建一个10G大小的raw格式的虚拟磁盘CentOS-7-x86_64.raw命令格式:qemu-imgcreate-f磁盘格式磁盘名称磁盘大小qemu-imgcreate-f磁盘格式-o?1.创建磁盘qemu-imgcreate-fraw/opt/CentOS-7-x86_64.raw10G执行效果#ls/opt/CentOS-7-x86_64.raw2.安装虚拟机使用virt-install命令,基于我们提供的系统镜像和虚拟磁盘来创建一个虚拟机,另外在创建虚拟机之前,提前打开vnc客户端,在创建虚拟机的时候,通过vnc

  10. ruby-on-rails - Ruby - 如何从 ruby​​ 上的 .pfx 文件中提取公钥、rsa 私钥和 CA key - 2

    我有一个.pfx格式的证书,我需要使用ruby​​提取公共(public)、私有(private)和CA证书。使用shell我可以这样做:#ExtractPublicKey(askforpassword)opensslpkcs12-infile.pfx-outfile_public.pem-clcerts-nokeys#ExtractCertificateAuthorityKey(askforpassword)opensslpkcs12-infile.pfx-outfile_ca.pem-cacerts-nokeys#ExtractPrivateKey(askforpassword)o

随机推荐