受益于JavaScript语言优秀特点,使NodeJS开发服务端应用很方便,配合NPM官方提供的大量第三方组件,让NodeJS更加如虎添翼。最近,需要使用NodeJS做一个服务端HTML5的游戏服务器,应用实现包含两大部分:一部分做HTTP服务器为客户端发送html、image、javascript等游戏资源文件;另一部分使用了socket.io实时响应玩家的操作。技术实现并不困难,但要实现一个轻量、稳定、流畅的HTTP静态文件服务器,还是需要花些心思的。

本文笔者对现有一些HTTP服务器的实现方式做了调查,并整理了各方式的性能、稳定性测试报告,汇总如下:

标题:NodeJS静态文件访问性能测试

使用两台服务器:浪潮和联想,浪潮服务器非常普通;联想那台配置高点(双CPU,16G内存),用来并发模拟大量客户端请求;

两台服务器都安装了CentOS7发行版的Linux系统,模拟客户端使用Webbench工具;

测试命令:webbench -c XXX -t 15 http://localhost:8000/index.html(XXX为模拟的客户端数量;15为测试时长;index.html的内容只有一句话,另加载两个png图片)

上述1、3使用了nodejs原生fs组件自建http服务器,2、4、5使用了npm组件;

结论:

可以看到,多数测试用例在客户端增加到5000时不同程度出现了请求失败,,服务器变得很不稳定;只有使用filecache组件通过缓存方式稳定性较好;性能上filecache组件也相对较理想。希望上面测试结果能给大家提供一点参考,但不知为什么nodejs原生fs模块的性能会那么好,笔者暂时想不到原因,欢迎大家指正。

NodeJS静态文件访问性能测试的更多相关文章

  1. springMVC静态文件访问

        web.xml文件  <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xs ...

  2. CDN加速静态文件访问

    CDN加速静态文件访问 全局调度 缓存技术 内容分发 带宽优化 CDN是Content Delivery Network的缩写,意思是内容分发网络.CDN的作用是把用户需要的内容分发到离用户近的地方, ...

  3. springMVC 静态文件 访问

    1. 新建web project 2. 导入所需jar包 3. 更改web.xml <?xml version="1.0" encoding="UTF-8" ...

  4. Nginx 优化静态文件访问

    简介 Web 开发中需要的静态文件有:CSS.JS.字体.图片,可以通过web框架进行访问,但是效率不是最优的. Nginx 对于处理静态文件的效率要远高于 Web 框架,因为可以使用 gzip 压缩 ...

  5. net core静态文件 访问除默认目录文件配置

    在我们项目的实际应用中,不光是需要访问默认静态文件夹 wwwroot ,还有可能要要去访问除默认目录以外的文件夹,接下来我们进行配置 1.在根目录创建一个文件夹,继续创建它的子文件夹Images,在I ...

  6. VUE打包好的文件部署让beego实现静态文件访问,如何用根目录来访问静态文件?

    最近的一个全栈项目,光伏云监控系统,后端使用beego框架,纯api,前端使用VUE2.0.项目地址:http://scada.ssechina.com:88/static 我把打包好的前端文件放到g ...

  7. 非常诡异的IIS下由配置文件加上svg的mime头导致整个网站的静态文件访问报错误

    调试了两天遇到一个非常诡异的问题 一个系统稳定运行了很多年,是用mvc5+WIN2008R2  + .NET 4.5 +IIS环境下运行,非常稳定,最近想迁移到一台新的服务器,为了少麻烦在阿里云上买了 ...

  8. nginx静态文件访问404

    在http模块下加入下面的代码 server { listen 80; server_name 192.168.1.249; #本机ip #access_log logs/host.access.lo ...

  9. Django开发环境静态文件访问配置

    settings主要配置项目: STATIC_ROOT = 'D:\Dev\jpDev\czxg\assets' #这个地方是所在系统标准目录文法配置 STATIC_URL = '/static/' ...

随机推荐

  1. 根据cid获取哔哩哔哩弹幕

    def biliget(cid): headers = { "Accept": "*/*", "Accept-Language": &quo ...

  2. VM Linux版本安装

    安装方法 https://www.jb51.net/softs/619194.html 1. 增加执行权限: sudo chmod +x VMware-Workstation-Full-14.1.2- ...

  3. 读《Tooth-Marked Tongue Recgnition Using Multiple Instance Learning and CNN Features》

    本人 组会汇报的一篇关于齿痕舌判定的文章,贴上PPT 涉及多示例学习和神经网络方面知识. 准确率有待提高哈哈.

  4. iOS 底层解析weak的实现原理(包含weak对象的初始化,引用,释放的分析)

    原文 很少有人知道weak表其实是一个hash(哈希)表,Key是所指对象的地址,Value是weak指针的地址数组.更多人的人只是知道weak是弱引用,所引用对象的计数器不会加一,并在引用对象被释放 ...

  5. Response重定向实现参数隐藏

    最近在弄一个SSH项目,前期已经做好了,现在的需求是进行单点登陆实现,涉及到重定向跳转(带有参数那种)情况,但是不能在地址栏上出现参数的信息,需要进行参数的隐藏跳转.由于时间比较急,本人没来得及开发一 ...

  6. PS笔刷的使用

    直接进入正文了! 第一步 打开你的ps,至少是CS6哦,没有安装包的可以去网上找,或者找我0.0. 第二步 将面板改为绘画功能. 第三步打开“窗口”调出“画笔”“画笔预设”“图层”等面板,“颜色”面板 ...

  7. week6

    面向对象编程 class类(新式类:class xx(obj):,经典类 class xx:) 构造函数 __init__(self,ret1,ret2...) 在实例化时做一些类的初始化工作 析构函 ...

  8. 建设工程造价数据服务云平台(计价BIM)

    经过多次沟通和对招标文件的理解,招标人通过软件平台建立和使用人员库.项目库.材料设备价格库.数据库等四库的真实需求,本着招标人对“成果文件”(指造价.招标代理的计价成果),即“项目库”的计价文件,不打 ...

  9. selenium自动化实例: 多层框架中关于iframe的定位,以及select下拉框选择

    对于一个自动化的初学者来说会很常见的遇到元素明明存在却始终定位不到, 从而导致脚本报错,当然定位不到元素的原因很多, 其中一种就是多层框架iframe导致的 下方截图示意: 下方为写脚本时候的示例并其 ...

  10. nginx之location的匹配规则

    nginx之location的匹配规则 一.语法规则 location [=|~|~*|^~] /uri/ { - } 符号 含义 = 开头表示精确匹配 ^~ 开头表示 uri 以某个常规字符串开头 ...