- 博客(107)
- 资源 (1)
- 收藏
- 关注
原创 Node.js性能分析神器Easy-Monitor
Node.js性能分析神器Easy-Monitor摘要:使用Easy-Monitor,可以准确定位Node.js应用的性能瓶颈,帮助我们优化代码性能。当应用出现性能问题时,最大的问题在于:如何准确定位造成性能瓶颈的代码呢?对于Node.js开发者,这里推荐一下Easy-Monitor,它应该是阿里巴巴某个90后程序员开发的。这个NPM模块可以帮助我们快速定位性能瓶颈。问题当负载较...
2019-07-19 17:03:21 372
原创 nodejs 死循环如何快速定位
1.用sudo gcore pid 产生对应进程的core文件。 然后借助第三方工具,比如alinode 分析。 不知道为什么 得到的死循环的时候 进程停留的js函数,并不能很准备的定位出函数。...
2019-07-19 16:56:37 1296
原创 nodejs cpu分析
有两种方法,一种是通过Node/V8自带的profile能力, 另一种是通过alinode的 CPU profile功能. 前者只列出了各函数的执行占比, 后者包括更加完整的调用栈,可读性更强,更加容易定位问题,建议采用后者.方法1: Node 自带 profile第1步: 以--prof参数启动Node应用$ node--prof index.js第2步: 通过压测工具loa...
2019-07-19 16:47:48 1326
原创 nodejs内存泄漏
V8内存限制node基于V8构建,通过V8的方式进行分配跟管理js对象。V8对内存的使用有限制(老生代内存64位系统下约为1.4G,32位系统下约为0.7G,新生代内存64位系统下约为32MB,32系统下约为16MB)。在这样的限制下,将导致无法操作大内存对象。如果不小心触碰这个界限,就会造成进程退出。原因:V8在执行垃圾回收时会阻塞JavaScript应用逻辑,直到垃圾回收结束再重新执行...
2019-07-18 16:48:11 807
转载 C++快速复习
1.基本结构C++语言由头文件与源文件组成。头文件中包含:版权与版本信息,宏定义,函数声明和类的声明。宏定义为是了防止头文件被重复引用。<>引用头文件则直接在系统库中查找头文件;“ ”引用头文件则先在当前工程目录下查找,若工程目录中不存在然后在系统库中查找。源文件中包含:版权与版本信息,对头文件的引用,系统功能代码的实现。用ifndef/define/e...
2019-07-14 16:59:22 542
转载 单服务器最大tcp连接数及调优汇总
启动线程数:启动线程数=【任务执行时间/(任务执行时间-IO等待时间)】*CPU内核数最佳启动线程数和CPU内核数量成正比,和IO阻塞时间成反比。如果任务都是CPU计算型任务,那么线程数最多不超过CPU内核数,因为启动再多线程,CPU也来不及调度;相反如果是任务需要等待磁盘操作,网络响应,那么多启动线程有助于提高任务并发度,提高系统吞吐能力,改善系统性能。单机最大tcp连接数网络编...
2019-05-15 10:47:18 434
转载 pomelo源码分析--session
作者:shihuaping0918@163.com,转载请注明作者pomelo中有session/frontendSession/backendSession/sessionService。名字看起来都有点像,这一篇准备讲session和sessionService。session是对用户连接的一个抽象,它会调用sessionService。sessionService是session的具体实...
2019-01-25 15:56:17 580 1
转载 pomelo源码分析--connector与其它组件交互
作者:shihuaping0918@163.com,转载请注明作者connector是一个重量级组件,它依赖connection/server/pushScheduler/session组件。 对session组件的依赖是对连接创建一个session。 对connection的依赖是连接数的增加减少,以及登录用户uid的管理。 对pushScheduler的依赖是,当异步发送时,把发送任...
2019-01-25 15:55:33 440
转载 pomelo源码分析--connector协议处理message
作者:shihuaping0918@163.com,转载请注明作者pomelo框架核心提供了sioconnector,udpconnector,hybirdconnector,mqttconnector。sioconnector基于socket.io,使用json通信,pc端通信。hybirdconnector基于tcp和websocket,使用二进制通信,主要用于手机端通信。mqttconn...
2019-01-25 11:59:50 591
转载 pomelo源码分析--node.js中的this
作者:shihuaping0918@163.com,转载请注明作者在继续分析代码之前,需要先讲一下node.js中的this是什么。因为不讲这个的话,后面的内容进行不下去。在以前版本的node.js中,全局this是个空对象,在node8的repl中,全局this和global是相等的。> this === globaltrue> 123但是,如果使用node8执行...
2019-01-25 11:53:25 237
转载 pomelo--connector之网络监听
作者:shihuaping0918@163.com,转载请注明作者pomelo的connector负责接收外部连接,同时做协议的编码解码,接收的时候做解码,发送的时候做编码。如果有对消息进行加密的话,也是在这里进行处理。有unicode的话,还要转码成utf8。connector的网络处理是基于事件的,这也符合node.js的设计。connector是一个component,根据pomel...
2019-01-24 18:25:11 929
转载 pomelo 配置设置和读取及app.load
作者:shihuaping0918@163.com,转载请注明作者以https://github.com/NetEase/chatofpomelo/tree/master/game-server服务器为例子来说明配置读取是怎么完成的,chatofpomelo是pomelo做为聊天服务器的例子。它的入口点是app.js。代码内容如下:var pomelo = require('pomelo'...
2019-01-24 18:20:09 895
转载 TCP连接的状态详解以及故障排查
人分类: c/c++socket网络编程网络知识版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/hguisu/article/details/38700899我们通过了解TCP各个状态,可以排除和定位网络或系统故障时大有帮助。(总结网络上的内容) 1、TCP状态 了解TCP之前,先了解几个命令: linux查看tcp...
2019-01-23 17:39:55 1108
转载 linux socket错误提示errno分析
参考链接:http://aigo.iteye.com/blog/1911134参考链接:https://baike.baidu.com/item/errno/11040395?fr=aladdinLinux网络编程socket错误分析errno的一些错误定义编辑以下主要来自2.6.32的内核代码中的/usr/include/asm-generic/errno.h及errno-bas...
2019-01-23 17:06:11 2489
转载 (pomelo系列入门教程)深入浅出node.js游戏服务器开发——Pomelo框架的设计动机与架构介绍
一、Pomelo的定义和组成以下是Pomelo官网给出的最初定义:Pomelo是基于node.js的高性能,分布式游戏服务器框架。它包括基础的开发框架和相关的扩展组件(库和工具包),可以帮助你省去游戏开发枯燥中的重复劳动和底层逻辑的开发。Pomelo最初的设计初衷是为了游戏服务器, 不过我们在设计、开发完成后发现pomelo是个通用的分布式实时应用开发框架。它的灵活性和可扩展性使pomel...
2019-01-21 16:18:28 1071 1
转载 (pomelo系列入门教程)深入浅出node.js游戏服务器开发——基于Pomelo的MMO RPG开发
在上一篇文章中,我们介绍了如何使用Pomelo来搭建聊天服务器。在这篇文章中,我们为大家介绍如何使用Pomelo框架来搭建MMO RPG服务器,并分析其设计思路和实现方法。以此来帮助大家更好的理解和使用Pomelo框架,理解Pomelo框架游戏开发的基础流程,使用方法和设计理念。本文中的游戏服务端架构,只是为了说明Pomelo的开发理念和设计思路,并不是基于Pomelo开发的唯一方案,开发者完...
2019-01-21 16:14:00 1303
转载 (pomelo系列入门教程)深入浅出Node.js游戏服务器开发--分布式聊天服务器搭建
在上一篇文章中, 我们介绍了游戏服务器的基本架构、相关框架和Node.js开发游戏服务器的优势。本文我们将通过聊天服务器的设计与开发,来更深入地理解pomelo开发应用的基本流程、开发思路与相关的概念。本文并不是开发聊天服务器的tutorial,如果需要tutorial和源码可以看文章最后的参考资料。为什么是聊天服务器?我们目标是搭建游戏服务器,为什么从聊天开始呢?聊天可认为是简化的实...
2019-01-21 13:45:07 799
转载 (pomelo系列入门教材)深入浅出node.js游戏服务器开发1——基础架构与框架介绍
游戏服务器概述没开发过游戏的人会觉得游戏服务器是很神秘的东西。但事实上它并不比web服务器复杂,无非是给客户端提供网络请求服务,本质上它只是基于长连接的socket服务器。当然在逻辑复杂性、消息量、实时性方面有更高的要求。游戏服务器是复杂的socket服务器。如果说web服务器的本质是http服务器,那么游戏服务器的本质就是socket服务器。 它利用socket通讯来实现服务器与客户...
2019-01-21 10:54:09 440
转载 pomelo初体会
随着Node.js的不断发展与壮大,应用范围也越来越广泛,从传统的企业应用,到互联网使用,再到云计算的发展,它的身影也是随处可见。当然,它的受欢迎程度能在短时间内得到这么快的发展,除却与其本身的事件模型及V8的性能优化等一系列特性有关之外,还和国内外很多互联网公司的攻城师的大量应用和参与到开源项目中有密切关系,如网易的游戏开发,淘宝的数据之美等等。随着HTML5应用和移动互联网平台的指数增长,越来...
2019-01-21 10:51:46 321
转载 MongoDB 写安全(Write Concern)
MongoDB Write Concern,简称MongoDB写入安全机制,是一种客户端设置,用于控制写入安全的级别。Write Concern 描述了MongoDB写入到mongod单实例,副本集,以及分片集群时何时应答给客户端。默认情况下,mongoDB文档增删改都会一直等待数据库响应(确认写入是否成功),然后才会继续执行。本文讲述了MongoDB 应答机制及相关参数。一、MongoDB应...
2019-01-19 10:59:12 256
转载 mongoDB3.6 java API简单使用(十)
package com.ljl.spring.boot.controller;import com.mongodb.*;import com.mongodb.client.MongoCollection;import com.mongodb.client.MongoCursor;import com.mongodb.client.MongoDatabase;import com.mon...
2019-01-19 10:24:46 403
转载 MongoDB 分片的原理、搭建、应用(九)
原文:https://kb.cnblogs.com/page/152995/一、概念: 分片(sharding)是指将数据库拆分,将其分散在不同的机器上的过程。将数据分散到不同的机器上,不需要功能强大的服务器就可以存储更多的数据和处理更大的负载。基本思想就是将集合切成小块,这些块分散到若干片里,每个片只负责总数据的一部分,最后通过一个均衡器来对各个分片进行均衡(数据迁移)。...
2019-01-19 10:14:49 195
转载 MongoDB 主从复制,副本集,分片(八)
原文:http://blog.csdn.net/canot/article/details/50739359 一、mongodb主从复制配置主从复制是mongodb最常用的复制方式,也是一个简单的数据库同步备份的集群技术,这种方式很灵活.可用于备份,故障恢复,读扩展等.最基本的设置方式就是建立一个主节点和一个或多个从节点,每个从节点要知道主节点的地址. 结构图: 配置主...
2019-01-19 09:42:02 175
转载 转 MongoDB数据导入导出,备份,安全认证(七)
1.导出数据(中断其他操作) 打开CMD,不是客户端 利用mongoexport -d 指明使用的库 -c 指明要导出的表 -o 指明要导出的文件名 -csv 制定导出的csv格式 -q 过滤导出 --type <json|csv|tsv> 1.1 把数据好test中...
2019-01-19 09:28:53 228
转载 MongoDB GridFS(六)
GridFS 简介GridFS 是 MongoDB 的一个用来存储/获取大型数据(图像、音频、视频等类型的文件)的规范。它相当于一个存储文件的文件系统,但它的数据存储在 MongoDB 的集合中。GridFS 能存储超过文档尺寸限制(16 MB)的文件。GridFS 将文件分解成块,将每块数据保存在不同的文档中,每块大小最高为 255 KB。GridFS 默认使用 fs.files 和...
2019-01-19 09:27:59 256
转载 MongoDB 分组统计,固定集合(五)
1.db.collection.count()返回集合总数或匹配查询的结果集总数> db.user.find(){ "_id" : ObjectId("5a39f91890cf1481126c33e8"), "name" : "test1", "age" : 20 }{ "_id" : ObjectId("5a39f92290cf1481126c33e9
2019-01-19 09:27:29 367
转载 mongoDB 索引(四)
索引通常能够极大的提高查询的效率,如果没有索引,MongoDB在读取数据时必须扫描集合中的每个文件并选取那些符合查询条件的记录。这种扫描全集合的查询效率是非常低的,特别在处理大量的数据时,查询可以要花费几十秒甚至几分钟,这对网站的性能是非常致命的。索引是特殊的数据结构,索引存储在一个易于遍历读取的数据集合中,索引是对数据库表中一列或多列的值进行排序的一种结构1.ensureIndex() ...
2019-01-18 20:25:40 266 1
转载 mongoDB 查询(三)
1.find()详解db.collection.find() - 查询集合,无参数则查询所有,并返回一个游标对象用法 db.collection.find(query, projection)参数参数 描述query 是可选参数,基于查询操作符指定了查询的条件,若希望返回collection中的所有文件,则无需指定该query 参数,直接 db.colle...
2019-01-18 20:14:00 423
转载 mongoDB简单的数据库创建,文档的增删改,常用命令(二)
常用命令> show dbs -- 查看数据库列表> use admin --创建admin数据库,如果存在admin数据库则使用admin数据库> db ---显示当前使用的数据库名称> db.getName() ---显示当前使用的数据库名称> db.dropDatabase() --删当前使用的数据库> db.rep...
2019-01-18 19:54:23 282
转载 mongoDB windows上的安装及介绍(一)
转载自:https://jingyan.baidu.com/article/d5c4b52bef7268da560dc5f8.html1.下载 https://www.mongodb.com/download-center#community下载完除了修改一下路径基本都是默认2.配置环境变量在环境变量path之后加bin的路劲 如E:\MongoDB\bin这样每次使用命令的...
2019-01-18 19:43:36 171
转载 [转载]使用消息队列实现分布式事务-公认较为理想的分布式事务解决方案
前阵子从支付宝转账1万块钱到余额宝,这是日常生活的一件普通小事,但作为互联网研发人员的职业病,我就思考支付宝扣除1万之后,如果系统挂掉怎么办,这时余额宝账户并没有增加1万,数据就会出现不一致状况了。上述场景在各个类型的系统中都能找到相似影子,比如在电商系统中,当有用户下单后,除了在订单表插入一条记录外,对应商品表的这个商品数量必须减1吧,怎么保证?!在搜索广告系统中,当用户点击某广告后,...
2019-01-16 21:58:41 330
转载 [分享]浅谈分布式数据库
1、先抛出两个问题问题一、当mysql单表数据量爆炸时,你怎么办? 问题二、当你的数据库无法承受高强度io时你怎么办?2、 基本概念2.1 谈数据库分片需要首先确定以下概念 1) 单库,就是一个库 2) 分片(sharding),分片解决扩展性问题,属于水平拆分,引入分片,就引入了数据路由和分区键的概念。分表解决的是数据量过大的问题,分库解决的是数据库性能瓶颈的问题。 ...
2019-01-16 20:59:39 476
转载 聊聊分布式事务,再说说解决方案
前言最近很久没有写博客了,一方面是因为公司事情最近比较忙,另外一方面是因为在进行 CAP 的下一阶段的开发工作,不过目前已经告一段落了。接下来还是开始我们今天的话题,说说分布式事务,或者说是我眼中的分布式事务,因为每个人可能对其的理解都不一样。分布式事务是企业集成中的一个技术难点,也是每一个分布式系统架构中都会涉及到的一个东西,特别是在微服务架构中,几乎可以说是无法避免,本文就分布式事...
2019-01-16 20:17:16 178
转载 ACID特性
数据库管理系统中事务(transaction)的四个特性(分析时根据首字母缩写依次解释):原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)所谓事务,它是一个操作序列,这些操作要么都执行,要么都不执行,它是一个不可分割的工作单位。(执行单个逻辑功能的一组指令或操作称为事务)详解1. 原子性原子性是指事务...
2019-01-16 20:13:59 524
原创 typescript保证同步的理解
首先,我先说一下:恕我直言,脚本真JB操蛋,虽然TS引入了类型,因为兼容JS,也是操蛋。再加上nodejs的事件循环。官方文档不人性,小众语言,尼玛,不给初学者活路。OK,发泄完了,现在来说下TS对于异步事件的同步控制吧。 关键字:promise,async,await,事件循环,异步IO具体怎么实现的自己去看。如果你要控制一小段的同步:比如查询A表之后,根据A的数据再去删除B数据...
2018-07-27 16:00:14 7193 1
原创 node.js异步控制流程 回调,事件,promise和async/await
首先nodejs的事件循环:最开始的main函数就是一个事件,事件处理完了之后,返回到事件循环,如果上个事件处理过程有异步IO的,那么在本次的事件循环中就会判断该异步IO是否符合,符合的话就去执行这个事件,如果什么事件都没有了的话,那么整体推出 写这个问题是因为最近看到一些初学者用回调用的不亦乐乎,最后代码左调来又调去很不直观。首先上结论:推荐使用async/await或者co/y...
2018-07-18 18:33:30 323
原创 js文件和ts文件的简单编译和调试
1.nodejs文件的编译1.1.如果安装好了nodejs环境,那么直接用node xx.js就可以执行这个js文件。1.2.如果用的是vscode的话,那么我们要创建一个目录,然后用vscode打开该目录,创建xx.js,然后点击调试按钮,看launch program是不是提示没有配置xxx,是的话,点击旁边的按钮,会生成一个.vscode目录,以及.vscode下的launch.js...
2018-07-17 16:02:05 9501
原创 nodejs,visual studio code, typescript安装过程
由于Node.js平台是在后端运行JavaScript代码,所以,必须首先在本机安装Node环境。安装Node.js目前Node.js的最新版本是7.6.x。首先,从Node.js官网下载对应平台的安装程序,网速慢的童鞋请移步国内镜像。在Windows上安装时务必选择全部组件,包括勾选Add to Path。安装完成后,在Windows环境下,请打开命令提示符,然后输入node -...
2018-07-17 14:11:27 326
原创 gcc 和常见的gdb
首先:Gcc的编译流程分为了四个步骤: 1.预处理,生成预编译文件(.文件): Gcc –E hello.c –o hello.i 2.编译,生成汇编代码(.s文件):(如果要加入gdb的话,在这一步加入-g即可) Gcc –S hello.i –o hello.s 3.汇编,生成目标文件(.o文件): Gcc –c hello.s –o...
2018-07-10 22:16:40 317
原创 同步IO、异步IO、阻塞IO、非阻塞IO之间的联系与区别
POSIX同步IO、异步IO、阻塞IO、非阻塞IO,这几个词常见于各种各样的与网络相关的文章之中,往往不同上下文中它们的意思是不一样的,以致于我在很长一段时间对此感到困惑,所以想写一篇文章整理一下。POSIX(可移植操作系统接口)把同步IO操作定义为导致进程阻塞直到IO完成的操作,反之则是异步IO按POSIX的描述似乎把同步和阻塞划等号,异步和非阻塞划等号,但是为什么有的人说同步IO不等于阻塞IO...
2018-07-10 20:32:06 141
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人