30

HTTP连接管理之并行连接、持久化连接(Keep-Alive、Proxy-Connection)、管道化连接

串行事务处理时延

在介绍连接方式之前,先介绍一下串行事务处理时延

  • 如果只对连接进行简单的管理,TCP 的性能时延可能会叠加起来。比如,假设有一个包含了3个嵌入图片的Web页面。浏览器需要发起 4 个 HTTP 事务来显示此页面: 1 个用于顶层的 HTML页面,3 个用于嵌入的图片。如果每个事务都需要(串行地建立)一条新的连接,那么连接时延和慢启动时延就会叠加起来

watermarktype_ZmFuZ3poZW5naGVpdGkshadow_10text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQxNDUzMjg1size_16color_FFFFFFt_70

  • 串行加载的另一个缺点:有些浏览器在对象加载完毕之前无法获知对象的尺寸, 而且它们可能需要尺寸信息来决定将对象放在屏幕的什么位置上,所以在加载了足 够多的对象之前,无法在屏幕上显示任何内容。在这种情况下,可能浏览器串行装 载对象的进度很正常,但用户面对的却是一个空白的屏幕,对装载的进度一无所知

一些提高HTTP连接性能的技术:

  • ①并行连接:通过多条 TCP 连接发起并发的 HTTP 请求
  • ②持久连接:重用 TCP 连接,以消除连接及关闭时延
  • ③管道化连接:通过共享的 TCP 连接发起并发的 HTTP 请求
  • ④复用的连接:交替传送请求和响应报文(实验阶段)

Continue reading

20

Nodejs mysql pool使用实例

Nodejs mysql pool使用实例,mysql连接池

在开发web应用程序时,连接池是一个很重要的概念。建立一个数据库连接所消耗的性能成本是很高的。在服务器应用程序中,如果为每一个接收到的客户端请求都建立一个或多个数据库连接,将严重降低应用程序性能。

因此在服务器应用程序中通常需要为多个数据库连接创建并维护一个连接池,当连接不再需要时,这些连接可以缓存在连接池中,当接收到下一个客户端请求时,从连接池中取出连接并重新利用,而不需要再重新建立连接。 Continue reading

19

Node.js GET Request ETIMEDOUT & ESOCKETTIMEDOUT

我使用Node.js – async & request模块来抓取超过1亿的网站,几分钟后我不断遇到错误ESOCKETTIMEDOUT & ETIMEDOUT。
我重新启动脚本后,它又可以工作了。这似乎不是连接限制的问题,因为我仍然可以做resolve4, resolveNs, resolveMx和curl没有延迟。
你觉得代码有什么问题吗?或任何建议吗?我希望将async.queue()并发性至少提升到1000。谢谢你! Continue reading

12

什么是CPU密集型、IO密集型?

CPU密集型(CPU-bound)

CPU密集型也叫计算密集型,指的是系统的硬盘、内存性能相对CPU要好很多,此时,系统运作大部分的状况是CPU Loading 100%,CPU要读/写I/O(硬盘/内存),I/O在很短的时间就可以完成,而CPU还有许多运算要处理,CPU Loading很高。

在多重程序系统中,大部份时间用来做计算、逻辑判断等CPU动作的程序称之CPU bound。例如一个计算圆周率至小数点一千位以下的程序,在执行的过程当中绝大部份时间用在三角函数和开根号的计算,便是属于CPU bound的程序。 Continue reading

12

多进程和多线程的应用场景

多进程模型的优势是CPU,适用于CPU密集型。同时,多进程模型也适用于多机分布式场景中,易于多机扩展。

多线程模型主要优势为线程间切换代价较小,因此适用于I/O密集型的工作场景,因此I/O密集型的工作场景经常会由于I/O阻塞导致频繁的切换线程。同时,多线程模型也适用于单机多核分布式场景。

io 操作不占用CPU(从硬盘、从网络、从内存读数据都算io)
计算占用CPU(如1+1计算) Continue reading

11

韩国演唱会抢票系统生产环境(Linux)配置记录

韩国演唱会抢票系统生产环境:

系统:CentOS Linux release 7.2.1511 (Core)

Linux管理系统:宝塔 (免费版 7.0.3)

开发语言:NodeJS (v12.14.0)

NodeJS开发框架:ThinkJS

其它说明:本系统是可以在远程主机中使用,也可以在本地搭建环境使用。windows系统/Liunx系统 都可以。

流程:

1、购买服务器及域名

对于抢购秒杀类系统,服务器核心数越多是越好的,可以提高并发并行的处理速度;内存就是核心数 x 2 。如果按最多并发抢100张票来计算,理论带宽1M就可以了,所以说带宽也可以随便选了。(查看我总结的计算服务器带宽的公式)。 Continue reading

11

pm2常用命令

pm2forever是启动Nodejs服务常用到的两个工具。使用这两个指令可以使node服务在后台运行(类似于linux的nohup),另外它们可以在服务因异常或其他原因被杀掉后进行自动重启。 由于Node的单线程特征,自动重启能很大程度上的提高它的健壮性。
本文不对比两者工具优劣,只是结合自己的使用,简要介绍如何在工程部署时更好的使用pm2。 Continue reading

10

linux下安装nodejs包管理器nvm

linux下安装nodejs包管理器nvm,linux命令nvm

下载安装

next:
vim ~/.bashrc 写入下面代码

下一步即可安装node
如 v6.11.0版本 Continue reading

10

Linux Kali-Rolling(树莓派)安装Atom编辑器

Atom是由GitHub开发的免费开源文本编辑器。基于Electron (CoffeeScript, JS, Less, HTML),它是一个使用web技术构建的桌面应用程序,经常被称为21世纪的文本编辑器,核心是可编程的。Atom的主要特性是跨平台编辑、内置包管理器、文件系统浏览器、多个窗格支持、查找和替换功能,以及智能自动完成。 Continue reading

10

Linux dpkg 命令用法及示例

Linux dpkg 命令用法及示例

dpkg是一个Debian的一个命令行工具,它可以用来安装、删除、构建和管理Debian的软件包。

下面是它的一些命令解释:

1)安装软件
命令行:dpkg -i <.deb file name>
示例:dpkg -i avg71flm_r28-1_i386.deb

2)安装一个目录下面所有的软件包
命令行:dpkg -R
示例:dpkg -R /usr/local/src Continue reading