udp cluster 多进程调度策略学习

本来我的目的是使用cluster模块的fork出多个进程,让各个进程都能处理udp消息的。但是最终测试发现,实际上仅有一个进程处理了绝大数消息,其他的进程,要么不处理消息,要么处理的非常少的消息。 然而使用cluster来开启http服务的多进程,却能够达到多进程的负载。 server端demo代码: const cluster = require('cluster') const numCPUs = require('os').cpus().length const { logger } = require('./logger') const dgram = require('dgram') // const { createHTTPServer, createUDPServer } = require('./app') const port = 8088 if (cluster.isMaster) { for (let i = 0; i < numCPUs; i++) { cluster.fork() } cluster.on('exit', (worker, code, signal) => { logger.info(`工作进程 ${worker.process.pid} 已退出`) }) } else { const server = dgram.createSocket({ type: 'udp4', reuseAddr: true }) server.on('error', (err) => { logger.info(`udp server error:\n${err.stack}`) server.close() }) server.on('message', (msg, rinfo) => { logger.info(`${process.pid} udp server got: ${msg} from ${rinfo.address}:${rinfo.port}`) }) server.on('listening', () => { const address = server.address() logger.info(`udp server listening ${address.address}:${address.port}`) }) server.bind(port) } 日志库如下: ...

2021-07-21 12:57:03 · 4 分钟 · Eddie Wang

使用nginx为udp服务负载均衡

对nginx的最低版本要求是? 1.9.13 The ngx_stream_proxy_module module (1.9.0) allows proxying data streams over TCP, UDP (1.9.13), and UNIX-domain sockets. 简单的配置是什么样? 例如监听本地53的udp端口,然后转发到192.168.136.130和192.168.136.131的53端口 注意事项 stream是顶层的配置,不能包含在http模块里面 proxy_responses很重要,如果你的udp服务只接受udp消息,并不发送udp消息,那么务必将proxy_responses的值设置为0 stream { upstream dns_upstreams { server 192.168.136.130:53; server 192.168.136.131:53; } server { listen 53 udp; proxy_pass dns_upstreams; proxy_timeout 1s; proxy_responses 0; error_log logs/dns.log; } } | Syntax: | proxy_responses number; Default: — Context: stream, server | This directive appeared in version 1.9.13. Sets the number of datagrams expected from the proxied server in response to a client datagram if the UDP protocol is used. The number serves as a hint for session termination. By default, the number of datagrams is not limited. If zero value is specified, no response is expected. However, if a response is received and the session is still not finished, the response will be handled. ...

2021-07-17 19:28:18 · 1 分钟 · Eddie Wang

windows版本nc教程:在windows上做udp测试

有时候,客户端的udp包被中间的防火墙拦截了,在linux上可以很简单的用nc启动一个udp server # 启动udp server 监听8888端口 nc -ulp 20000 # 启动udp client nc -u 127.0.0.1 20000 在linux上启动nc udp server很简单,但是在windows上,没办法安装nc啊?😭 峰回路转 https://nmap.org/download.html 在查看了nc的官网之后,发现nc实际上也提供了windows的程序,有两种版本。 有GUI界面的,使用友好,安装包比较大 https://nmap.org/dist/nmap-7.91-setup.exe 仅仅在命令行下执行,刚好满足需求 https://nmap.org/dist/nmap-7.91-win32.zip 看看带GUI界面的 附件 nmap-7.91-win32.zip

2021-06-16 13:31:13 · 1 分钟 · Eddie Wang

5个接口压力测试工具

ab C语言 优点 安装简单 缺点 不支持指定测试时长 安装 # debian/ubuntu apt-get install apache2-utils # centos yum -y install httpd-tools wrk https://github.com/wg/wrk C语言 优点 支持lua脚本 wrk is a modern HTTP benchmarking tool capable of generating significant load when run on a single multi-core CPU. It combines a multithreaded design with scalable event notification systems such as epoll and kqueue. An optional LuaJIT script can perform HTTP request generation, response processing, and custom reporting. Details are available in SCRIPTING and several examples are located in scripts/. ...

2021-05-31 13:00:16 · 2 分钟 · Eddie Wang

又发现了一个宝藏linux发行版 manjaro

overview 我主要使用过4个操纵系统。windows,macos,ubuntu,manjaro,每个操作系统,我都有上年或者上月的使用体会。 如果你是普通用户,无论工作还是学习,都不涉及到写代码的话。windows和mac是最好的选择,如果你是一名开发人员,那么macos,ubuntu和manjaro都是可以选择的。 我是一个很容易接受操切换作系统改变的人,从每个系统上我都可以很顺畅的切换。但是并不是所有人都是如此,有些人即使用了一年多的mac,还是无法接受,最终又换回了windows。 changelog 大学到工作第一年,我一直用windows,满足各种需求 工作第二年,我换了mac。因为我想轻便的笔记本,另外也想尝尝鲜。mac的屏幕、界面UI、触摸板都是值得称道的地方,键盘体验就不足人意了。 从mac切换到ubuntu, macbook使用接近4年了。明显感觉到一些性能上的不足,刚好又发现一台空闲的台式机没人用,台式机性能不错,之前是做服务器的,CPU、内存、磁盘资源都比较丰富。然后我就在上面安装了ubuntu。系统的初始化软件安装有些折腾人,要安装中文输入法,常见的软件例如微信和QQ, 安装还是有些难度的。ubuntu刚开始使用还是比较流畅的,但是接下来遇到非常致命的问题,UI经常卡死。查下来发现和Xorg以及系统的显卡有关,网上搜了下,很多人遇到类似的问题,也尝试了一些解决方案,但是还是无法解决。索性我就关了ubuntu的图形界面,仅仅ssh远程开发。 从ubuntu切换到macos, 恢复到之前的状态,感觉很好。但是看到macbook pro上接的扩展坞,以及被各种线缆高的乱糟糟的桌面,想尝试其他Linux发行版的想法又在心里悄悄发了芽,一路疯长。 道除了ubuntu, 就没有其他选择了吗?调研一番,发现了manjaro这个发行版,用户评价很不错。然后我就试试看,结果发现安装各种软件比ubuntu方便多了,试用了几天,也是越来越喜欢。又发现了一个宝藏发行版。 其实我一直对manjaro这个单词又很大的好奇,这个英文名是什么意思呢?词典上没有对这个英文词的介绍,只是说是一个linux发行版。 manjaro 什么意思?如何发音? marjaro这个词来自kilimanjaro, 乞力马扎罗是非洲最高的高山,这座山是由于火山爆发所产生的,这个可能比较贴合marjaro的滚动发布的特点,也说明这个发行版是比较活跃的吧。 Although the inspiration for the name originates from Mount Kilimanjaro, it may be pronounced as ‘Man-jar-o’ or as ‘Man-ha-ro’. https://wiki.manjaro.org/index.php/Manjaro_FAQ 乞力马扎罗山(斯瓦西里语:Kilimanjaro,意为“灿烂发光的山”)位于坦桑尼亚东北的乞力马扎罗区,临近肯尼亚边界,是非洲的最高山,常被称为“非洲屋脊”、“非洲之王”。其最高峰为基博峰(也称乌呼鲁峰),海拔5895米。 manjaro发行版的特点 图形化安装界面,非常方便 自带图形界面 自动硬件检测,图形化支持做的比ubuntu好太多 滚动更新 非常多的包,可以使用AUR来安装包 相比与Arch, manjaro对新手非常友好 参考 https://manjaro.org/terms-of-use/ Developed in Austria, France, and Germany, Manjaro provides all the benefits of the Arch operating system combined with a focus on user-friendliness and accessibility. https://wiki.manjaro.org/index.php/About_Manjaro ...

2021-05-30 13:42:36 · 1 分钟 · Eddie Wang

大写锁定键映射为escape

大写锁定键一般都是非常鸡肋的功能。 仅仅一次生效 setxkbmap -option caps:escape 大写锁定键改为esc setxkbmap -option ctrl:nocaps 大写锁定键改为ctrl 永久生效 /etc/X11/xorg.conf.d/90-custom-kbd.conf Section "InputClass" Identifier "keyboard defaults" MatchIsKeyboard "on" Option "XKbOptions" "caps:escape" EndSection 注销或者重启后生效 https://superuser.com/questions/566871/how-to-map-the-caps-lock-key-to-escape-key-in-arch-linuxhttps://wiki.archlinux.org/title/X_keyboard_extension

2021-05-24 20:25:34 · 1 分钟 · Eddie Wang

再读鲁滨逊漂流记: 成年人如何面对孤独

初中的时候,我曾经读过鲁滨逊漂流记,那时候这本书中最吸引我的是各种新奇的冒险体验,鲁滨逊接下来会遇到什么事情,是我最关注的事情。 最近,我又开始读这本书了。是因为我感觉到很孤独,我不知道如何解决。我想,鲁滨逊一个人在一个荒岛上过了二十八年,他是如何面对孤独的呢?我想找到这个答案。 写日记 小说中有不少的章节,都是鲁滨逊的日记。记录了他每天的工作和经历,通过写日志,他仿佛能够与自己对话。所以,有时候当我感到孤独的时候,我也写日记,把我的感想,我的困惑和烦恼统统写出来。对我自己来说,这也是一种释放。 投身工作,制造产品,让自己忙活 除非生病或者下雨,鲁兵逊总是在不停的忙活着。 收集葡萄,晒葡萄干 圈养小羊,让自己有充足的肉可以吃 种植大麦,自己制作面包 加固自己的房子 晒制陶土,制作陶器 环岛旅行 … 鲁滨逊每天都在忙活着,每一天过得都非常有意义。我也觉得自己决不能浪费时间。 找到自己的信仰 鲁滨逊在一次生病过程中,身体非常虚弱,当他回忆往事的时候,总觉得自己是个罪恶的人,无法得到谅解。但是偶然他得到一本《圣经》,他阅读圣经,从中找到自己的信仰。有信仰是非常幸福的事情,但是你若问我我的信仰是什么,我也不知道我的信仰是什么。 这是最好的时代,也是最坏的时代。所有的人都觉得90后是压力最大的一代,90都神经也是最敏感的(腾讯张军的致敬青年,白岩松的“不会吧”)。我们承受着各种压力,其中最大的可能就是房价了。 人生当中,自由自在可能仅仅是片刻的,承受压力却是主旋律。但是如何面对压力,却把人分成了不同的样子。有的人会被压力击垮,放弃抵抗,沉醉于各种网络精神鸦片中,有的人却能负重前行,坚持学习,一往无前。 罗曼罗兰说过:这世上只有一种真正的英雄主义,就是认清生活的真相,并且任然热爱她。

2021-05-17 18:23:41 · 1 分钟 · Eddie Wang

RabbitMq 大量的连接抖动

连接抖动介绍 Workloads with high connection churn (a high rate of connections being opened and closed) will require TCP setting tuning to avoid exhaustion of certain resources: max number of file handles, Erlang processes on RabbitMQ nodes, kernel’s ephemeral port range (for hosts that open a lot of connections, including Federation links and Shovel connections), and others. Nodes that are exhausted of those resources won’t be able to accept new connections, which will negatively affect overall system availability. ...

2021-05-13 11:41:43 · 1 分钟 · Eddie Wang

macbook pro 使用三年后的感受

我的macbook是2017买的, 使用到今天大概1204天。 最初的使用体验是 触摸板很灵敏 屏幕很高清 系统很流畅 三年中出现过的问题 键盘中的几个按键出现过问题,按键不灵敏。17年是用的蝴蝶键盘,这个键盘问题很多。最新版已经换成了剪刀脚键盘了。 屏幕老化,屏幕的四周出现淡红色的红晕,但是不影响使用。 如果不充电的情况下,掉电蛮快的,而且有时候电量还很多,就自动关机。 现在的感觉: 触摸板我基本不会用了,因为大部分时间我都是用键盘可以搞定一切。因为我用了vim编辑器。 我也不再使用macbook pro自带的键盘,因为真是不好用。所有的笔记本键盘,除了thinkpad的键盘。都不太好用,不适合长时间打字。所以我用了外接的静电容键盘。 无论多么好的自带键盘,都比不过外接的键盘,毕竟是专业的。当然除非你经常初查或者移动,外接键盘真是非常值得入手。 关于下一台电脑:下一台电脑我会等待M2芯片, macbook pro或则是macbook mini, 这个我还没想好。我对命令行以及相关unix有着很大的依赖。即使用ubuntu, 我也不可能再使用windows。

2020-12-30 13:25:21 · 1 分钟 · Eddie Wang

树莓派安装fs 1.10

1. 将源码包上传到服务器, 并解压 安装依赖 apt update apt install autoconf \ libtool \ libtool-bin \ libjpeg-dev \ libsqlite3-dev \ libspeex-dev libspeexdsp-dev \ libldns-dev \ libedit-dev \ libtiff-dev \ libavformat-dev libswscale-dev libsndfile-dev \ liblua5.1-0-dev libcurl4-openssl-dev libpcre3-dev libopus-dev libpq-dev 配置 ./bootstrap.sh ./configure make make && make install 参考:https://www.cnblogs.com/MikeZhang/p/RaspberryPiInstallFreeSwitch.html

2020-11-18 13:04:21 · 1 分钟 · Eddie Wang