11
2016
08

mongodb关于最大连接数修改【续】

解决问题:Invariant failure: ret resulted in status UnknownError 24: Too many open files at src/mongo/db/storage/wiredtiger/wiredtiger_session_cache.cpp 73

上次文章《mongodb最大连接数修改》,但没有彻底,重启机器后仍有问题

07
2016
04

Centos安装Redis

Redis作为一个高性能的key-value内存数据库,做web开发是必须要掌握的一个技能。最近用来作为node集群的session,下面记录Centos上安装过程。

centos安装非常简单,参照官方代码。

$ wget http://download.redis.io/releases/redis-3.0.7.tar.gz
$ tar xzf redis-3.0.7.tar.gz
$ cd redis-3.0.7
$ make

但make test后出现了错误,解决You need tcl 8.5 or newer in order to run the Redis test错误需要安装tcl。

28
2016
03

什么是同构JavaScript 应用?

什么是同构? 

“Write once, run everywhere”这是一句形容Java的语句。现在Nodejs出来后Javascript也可以用这句话来描述了。这就引出了同构JavaScript应用的概念:一份代码同时在客户端和服务端渲染的JavaScript应用。

单页应用的问题

25
2016
03

惊群现象和Nginx处理惊群的方法

什么是“惊群”

当多个进程/线程再等待统一资源的时候,一旦多个进程/线程需要的资源出现释放时,进程/线程间就会出现对该资源的竞争现象,由于只有一个进程/线程请求到资源,就出现这种现象“惊群”(Thundering herd)。产生的结果就是

  1. 系统对用户进程/线程频繁的做无效的调度、上下文切换,系统系能大打折扣。

23
2016
03

Nodejs高性能服务架构:cluster模式+Nginx多进程模式

Nodejs和Nginx都是轻量级,高性能服务器的代表,而Nodejs站点的标准配置就是在Nodejs服务器上架一层Nginx反向代理,两种轻量级高性能的服务器组合在一起产生什么样的火花呢?往下看。

为什么要在Nodejs上加Nginx反向代理,原因归纳如下:

  1. 用Nginx来做静态资源的反向代理,减少Nodejs的压力;

21
2016
03

mongodb最大连接数修改

在nodejs启动时一次性开了200个Mongodb连接,目的是为了高并发时减少数据库连接耗时。如果做cluster开10个实例就有2000个连接了,这样就有些节点连接不到数据库的情况。

原因是Mongodb默认最大连接数只有819个,于是通过在启动里面加参数 --maxConns=3000来提高最大连接数。然后重启服务,但悲剧的是通过db.serverStatus().connections;查看到最大连接数还是819。原因是linux系统的限制,Linux系统默认一个进程最大文件打开数目为1024。需要在Mongodb开启前修改这个限制。在运行数据前运行ulimit -n命令 。如果已经加入开机脚本,就要在脚本中启动前增加这行了。比如:

21
2016
03

nodejs插件PM2,我已经找到草原

昨天写的一篇关于PM2的博文:nodejs插件PM2,还只是一匹野马![Eliminate]。对于这个碰了一脸灰的插件,重新研究一下,得出了一些新的结论。完全推翻上篇的论点image

18
2016
03

nodejs插件PM2,还只是一匹野马![Eliminate]

上线Nodejs的产品,无论自己写Linux脚本还是用node的插件,都有必要把服务护航起来。起初我们一直用的是forever,除了监控文件更新的忽略文件夹功能稍微让人抓狂外,用来护航和环境切换确实不错。


但当你遇到PM2的时候,你会很快忘记forever,而爱上这个超级监控的开源插件,据说是继承了forever的优点,补充了forever的不足。我们就来看看PM2有多么的吸引人。


介绍

07
2014
11

Hybird APP统计前后端实现原理(Nodejs+JavaScript)

网站统计用来统计网站及网页的浏览情况,以及转换率等。一般情况下第三方统计都可以满足需求,GA,百度统计,站长统计等等,都是非常好的统计工具。手机APP也是有很多,但对于Hybird APP这个畸形的APP品种而言要统计到各个点确实比较麻烦,考虑的点比较多,具体不讨论,在路上的人都知道。

其实本文重点是讨论一下统计工具前后端实现的原理等,下面三各点都很重要,本文只记录抓取问题。


抓取数据

后端Nodejs主要分析User-Agent数据,利用开源模块ua-parser。可以得到客户端浏览器版本,设备等

12
2014
06

JavaScript代码重构系列-重新组织你的函数

JavaScript代码重构系列中,最重要的要算這節了: 重新组织你的函数

  1. 提炼函数

  2. 将函数内联化

  3. 用查询取代临时变量

  4. 以临时变量取代高消耗的查询

  5. 将临时变量内联化

  6. 引入解释性变量