[译]C10M并发连接的秘密
The Secret To 10 Million Concurrent Connections -The Kernel Is The Problem, Not The Solution 现在我们已经攻克了C10K问题,那么我们如何升级并支持1000万并发连接?你会说这是不可能的。不是这样的,现在的系统正在使用一些他们可能不熟悉的激进技术来提供 1000 万个并发连接。为了了解它是如何完成的,我们求助于 Errata Security 首席执行官 Robert Graham,以及他在 Shmoocon 2013 上题为C10M Defending The Internet At Scale的精彩演讲。 Robert以一种巧妙的方式来阐述我以前从未听说过的问题。他从一些历史开始,讲述了 Unix 最初为何被设计为电话网络的控制系统,而不是通用服务器操作系统。实际传输数据的是电话网络,因此控制平面和数据平面之间应该有明确的分离。我们现在正在使用Unix服务作为数据平面的一部分,但是我们不应该这么做。如果我们设计一个内核来处理每台服务器一个应用程序,那么我们的设计将与多用户内核的设计...
个人服务器Ubuntu2404部署hexo博客
创建git裸仓库 git init --bare hexo.git 修改git push之后的钩子操作 修改hooks/post-receive 文件 #!/bin/bash GIT_WORK_TREE=/var/www/hexo git checkout -f 参考资料 https://cloud.tencent.com/developer/article/2308870?areaId=106001 https://cloud.tencent.com/developer/article/1662792
Unraid使用自带WireGuard进行内网穿透
由于使用其他的内网穿透工具(frp等),需要部署在docker上,没办法在外网进行停止docker的操作。所以使用自带WireGuard用于备用,另外使用WireGuard内网穿透还可以直接访问内网的其他应用和设备。 Unraid设置 本机配置 右上角点击高级进行配置 点击生成密钥对生成本机的密匙 本地隧道网络池设置一个ip网段,需要不同于本地内网的网段 本地隧道地址填随便一个该网段下的一个ip地址,为本机的ip地址 其他字段不用填 Peer设置(对端,公网服务器) 具体设置见图片 Peer公钥和私钥填写在服务器上生成的密钥,或者在unraid生成,在服务器上填写此处生成好的 持久保活参数 重要!!! 必填 访问端和unraid端主动连接服务器,服务器代理访问段数据转发到unraid 服务器设置 本人使用的Unbuntu2404,使用apt安装的wireguard。其他linux发行版可以参考 配置文件在/etc/wireguard/wg0.conf,需要sudo权限 [Interface] PrivateKey = xxxx...
编程常见问题解决
MySQL ubuntu2404 使用 apt安装mysql8.0.37 无法直接登陆root 需要使用auth_socket方式登陆 sudo mysql -uroot --socket=/var/run/mysqld/mysqld.sock Vim vim Youcompleteme C++补全无法补全头文件 使用–clangd-complete安装,旧的–clang-complete不支持头文件补全 Docker build时报错 dial tcp: lookup goproxy.cn on [fe80::1%2]:53: dial udp [fe80::1%2]:53: connect: network is unreachable DNS有问题 https://robinwinslow.uk/fix-docker-networking-dns 修改/etc/docker/daemon.json 添加 "dns": ["8.8.8.8"] Ubuntu Ubun...
[译]C++11中的通用引用
Universal References in C++11 – Scott Meyers 或许C++11中最重要的新特征是右值引用;右值引用是移动语义和完美转发的基础(关于右值引用,移动语义,完美转发可以参考Thomas Becker’s overview)。 在语法上,右值引用和标准引用类似,区别是使用两个&,这个函数使用了Widget的右值引用: void f(Widget&& param); 考虑到右值引用是使用“&&”声明的,似乎可以合理地假设类型声明中出现“&&”表示一个右值引用,事实并非如此: Widget&& var1 = someWidget; // here, “&&” means rvalue reference auto&& var2 = var1; // here, “&&” does not mean rvalue reference tem...
Hello World
Welcome to Hexo! This is your very first post. Check documentation for more info. If you get any problems when using Hexo, you can find the answer in troubleshooting or you can ask me on GitHub. Quick Start Create a new post $ hexo new "My New Post" More info: Writing Run server $ hexo server More info: Server Generate static files $ hexo generate More info: Generating Deploy to remote sites $ hexo deploy More info: Deployment
TCP百万连接数测试(Linux epoll)
基础 tcp连接通过五元组(源IP、源端口、目的IP、目的端口、协议)区分不同连接,其中有一个元素不一样即代表不同的连接 如果只用一台客户端进行测试,由于端口数量最多为65535,最多只能实现65536个连接,所以此次测试服务器使用100个端口进行同时监听,此时可以使用少量客户端完成百万连接测试 配置 测试前需要先解除系统的各项限制,配置如下 服务器配置 虚拟机Uuntu2004,分配8个逻辑核心,8g内存 # 修改 /etc/sysctl.conf net.ipv4.tcp_mem = 262144 524288 786432 net.ipv4.tcp_wmem = 2048 2048 4096 # tcp发送缓冲区,单位是字节 net.ipv4.tcp_rmem = 2048 2048 4096 # tcp读取缓冲区,单位为字节 net.nf_conntrack_max = 1048576 # 内核netfiter可以同时处理的任务数 fs.file-max ...
