- 1、本文档共41页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
集群层面优化节点间通讯inet_tcp唯一通道,潜在的瓶颈节点管理成本nettick开销不可忽视节点up、down开销Ei库用C来赢得速度Pg2简化管理业务层面的优化尽可能的简单能够并行计算Smallmessage,bigcomputation为业务估算要消耗的资源提早分配内存CPU内存和CPU的平衡部署计算密集型和IO密集性在同一台物理机器资源互补Plainvs.SMPplain适合做简单的IO操作smp适合做密集计算Hibernate根据业务的特点定时来做快速打扫战场释放资源数据组织进程和物理世界的对象1:1多用etstuple,list,arraydict,processdict无锁结构有限的调度器每个调度器一个slot如何测量测量什么热点Erlang代码的热点Erts的热点OS的热点延迟调度排队抖动不是绝对的公平测量工具OS层面systemtapoprofiledstattopiptrafwiresharkprocfsErlang工具集etoppmaninstrumentlockcounterdbgerlang:statisticsmodule:info(inet,ets,…)erts_debug**优化案例Erlang应用优化案例Ehttpd测试输出“Helloworld”可超过20000并发短链接Hotwheel40000广播Googlehotwheel简单Key/Value查询系统HTTPecho每秒20000短连接单个CPUTaskset-c1??erl+Ktrue+h99999?+P99999??-sehttpd优化前后对比1120320090硬件普通桌面双核CPU,2G内存微调LinuxVM和协议栈,32位操作系统优化和patch了ErlangVM,采用beam.plain优化了ehttpd程序,采用系统高级网络选项Hotwheel广播服务Joel悬赏$2000,挑战20K成功挑战通过每CPU40K/s这个应用代表了大部分网络服务程序的模型,对于整个业界水平的提高很有借鉴意义简单Key/Value查询系统(身份证查询系统?)测试硬件8核心16G内存测试结果并发长链接数1000000并发查询100000/s预备知识优化的层次选型操作系统ErlangVM语言集群业务Erlang适合做什么IO密集型高度优化完备的IO,顶尖的C高手20年的耕耘高性能网络服务器多年的开发非常完善类似于一个操作系统很好的处理掉了[高性能服务器SevenSins]轻松达到C10KCPU利用先进的SMP调度器更好的利用多核心CPU*nix操作系统,用C++做例子函数(voidfun(){})类(classmod{};)模块(mod.cpp)可执行文件(编译器,机器指令)应用程序包括数据文件OS启动,系统进程(抢占式调度)IPC通讯监控工具(Top)Erlang和操作系统的类比Erlang和操作系统的类比(cont’d)函数fun()-okend模块modulemod.mod.erlBeam文件编译器opcodeApplicationbeam+数据文件Erlang和操作系统的类比(cont’d)VMbootstrapErlang进程(抢占调度)消息PortIPC工具集etopERTS内部结构Erlang进程调度原理调度原则尽量让一个CPU忙LogicCPU从低到高上下文切换context_switch开销消息传递的开销拷贝malloc/free垃圾收集Port调度原理Port独立调度和宿主进程同一个调度器调度的单位是该Port触发的一串IO事件调度延迟busy_port水位线buffer锁如何优化工具方法理解了Erlang和*nix的相同点借鉴*nix的工具和方法创造工具和方法操作系统层面的优化操作系统的选择32位系统vs.64位系统没有内存空间限制64位比较慢RHEL上游厂商致力于高性能操作系统VdsoRhelRt重新用ICC编译内核和glibcVM和TCP协议栈的优化操作系统层面的优化降低系统的swapness,避免内存颠簸资源倾斜,全力服务应用给我尽可能多的物理内存,越多越好Erlang运行期层面优化新版本的OTP致力于SMP方面的改进更细粒
本人在医药行业摸爬滚打10年,做过实验室QC,仪器公司售后技术支持工程师,擅长解答实验室仪器问题,现为一家制药企业仪器管理。
文档评论(0)