ipv4

Linux socket.error: [Errno 99] Cannot assign requested

纵然是瞬间 提交于 2020-01-08 12:24:21
Python 使用 from pymongo import MongoClient 连接mongodb,由于没有关闭连接,导致 netstat -alnt|wc -l 达到几万个 socket.error: [Errno 99] Cannot assign requested address 网上你去搜,基本都是说bind的时候,地址已经被用了,都是胡扯。地址被用报的错误应该是: Address already in use才对 然后我看得都是英文的,说明外国人也不是想象中的那么一丝不苟, 言归正传。socket发起connect请求的时候会随机分配一个端口给你。这个分配的端口是有范围的,记录在: /proc/sys/net/ipv4/ip_local_port_range 这个文件里面(fedora 17).当你用多个进程发起过多的请求的时候,端口用完了就会报这个错误。比如我就开了4个进程,一下发起了40000个请求。 你可以做个实验试试,切换到root用户,敲一下这条命令: echo 32768 32769 > /proc/sys/net/ipv4/ip_local_port_range 这下你打开人人,微博就会发现很多图片加载不出来了。因为图片加载在浏览器里面就是并行加载的,由于你没有足够的端口数,所以图片加载都失败了。别当心,这个修改是临时的(是不是临时的我也不知道

关于 Out of Socket memory 的解释

孤街醉人 提交于 2020-01-07 20:07:05
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 关于 Out of Socket memory 的解释 1. 原因分析 一台 Nginx server,到晚上高峰 messages 出现大量的如下信息: Apr 23 22:43:21 rs1 kernel: [...] Out of socket memory 两种情况会出发 "Out of socket memory" 的信息: 1.有很多的孤儿套接字(orphan sockets) 2.tcp socket 用尽了给他分配的内存 首先看看情况 2。对于 TCP socket 来说,使用 pages 来计数的,而非 bytes,一般情况下 1 page = 4096 bytes。page 大小可以通过下面命令获得: $ getconf PAGESIZE 4096 查看内核分配了多少的内存给 TCP: $ cat /proc/sys/net/ipv4/tcp_mem 69618 92825 139236 第一个数字表示,当 tcp 使用的 page 少于 69618 时,kernel 不对其进行任何的干预 第二个数字表示,当 tcp 使用了超过 92825 的 pages 时,kernel 会进入 “memory pressure” 第三个数字表示,当 tcp 使用的 pages 超过 139236 时

观光队2019 SDN大作业

谁说胖子不能爱 提交于 2020-01-07 09:55:10
视频链接 GitHub地址 本组成员 学号 姓名 贡献比例 031702236 王耀鑫(组长) 20% 031702234 林银河 18% 031702241 苏杰隆 18% 031702206 吴雅虹 18% 031702223 郑志强 26% 拓扑图 功能设计 本次大作业我们小组应用P4编程语言实现一个防火墙功能,限制外网对内部网络的访问,而内部网络可以正常访问外网,起到一定程度的安全防护作用。 核心代码 parser MyParser(packet_in packet, out headers hdr, inout metadata meta, inout standard_metadata_t standard_metadata) { state start { transition parse_ethernet; } state parse_ethernet { packet.extract(hdr.ethernet); transition select(hdr.ethernet.etherType) { TYPE_IPV4: parse_ipv4; default: accept; } } state parse_ipv4 { packet.extract(hdr.ipv4); transition select(hdr.ipv4.protocol){ TYPE

观光队2019 SDN大作业

点点圈 提交于 2020-01-07 08:12:59
视频链接 GitHub地址 本组成员 学号 姓名 贡献比例 031702236 王耀鑫(组长) 20% 031702234 林银河 18% 031702241 苏杰隆 18% 031702206 吴雅虹 18% 031702223 郑志强 26% 拓扑图 功能设计 本次大作业我们小组应用P4编程语言实现一个防火墙功能,限制外网对内部网络的访问,而内部网络可以正常访问外网,起到一定程度的安全防护作用。 核心代码 parser MyParser(packet_in packet, out headers hdr, inout metadata meta, inout standard_metadata_t standard_metadata) { state start { transition parse_ethernet; } state parse_ethernet { packet.extract(hdr.ethernet); transition select(hdr.ethernet.etherType) { TYPE_IPV4: parse_ipv4; default: accept; } } state parse_ipv4 { packet.extract(hdr.ipv4); transition select(hdr.ipv4.protocol){ TYPE

Nginx概念和配置项用法篇一

大兔子大兔子 提交于 2020-01-07 07:59:30
一:理解Nginx 1:什么是Nginx   Nginx (engine x) 是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器。 2:Nginx特性   (1)更快   (2)高扩展性,Nginx的设计极具扩展性, 它完全是由多个不同功能、 不同层次、 不同类型且耦合度极低的模块组成。   (3)高可靠性   (4)低内存消耗   (5)单机支持10万以上并发连接   (6)热部署,即可以在7*24小时不间断提供服务 3:Nginx使用要求   1:内核为2.6以上版本的操作系统       [root@localhost ~]# uname -a     Linux localhost.localdomain 3.10.0-514.el7.x86_64 #1 SMP Tue Nov 22 16:42:41 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux   2:所需软件     1:gcc编译器       用户编译c语言程序 #yum install -y gcc     2:PCRE库       支持正则表达式       #yum install -y pcre pcre-devel     3:zlib库       zlib库用于对HTTP包的内容做gzip格式的压缩 。       #yum

How to know if given IPV6 address belongs to the same subnet as local machine

帅比萌擦擦* 提交于 2020-01-07 07:45:10
问题 Currenly I have a c function that takes a ip address and subnetmask and checks if given ipv4 is private/public. It does by following logic to matchsubnet: (local ipv4 address && local subnetmask) == (given ipv4 && given subnetmask) What logic can be written for ipv6? I can write a function to receive an ip and subnet prefix. Can i get local subnet prefix? 回答1: I order to determine if two hosts are on the same subnet take both their addresses and prefix lengths (subnet masks). If the prefix

INADDR_LOOPBACK macro from <netinet/in.h> not imported in swift

末鹿安然 提交于 2020-01-06 21:21:40
问题 I'm trying to use the peertalk framework which has no documentation. On their obj-c example they use the INADDR_LOOPBACK macro, and example is working. But when i try to do the same in swift the system throw me an unresolved identifier error. Anyone knows how to fix it? http://www.gnu.org/software/libc/manual/html_node/Host-Address-Data-Type.html 回答1: Update for Swift 3: As of Swift 3, INADDR_LOOPBACK is imported into Swift. Therefore it suffices to add #include <netinet/in.h> to the bridging

Get visitors ipv4 behind cloudflare

倾然丶 夕夏残阳落幕 提交于 2020-01-06 02:27:11
问题 I just have the problem that I want to get the visitors IP Address. Everythings fine but one user just give me the IPv6. This is the code I can give you, moreover I just had installed the cloudflare apache2 Mod. $_SERVER['REMOTE_ADDR'] = $_SERVER["HTTP_CF_CONNECTING_IP"] ? $_SERVER["HTTP_CF_CONNECTING_IP"] : $_SERVER["REMOTE_ADDR"]; $ip = $_SERVER['REMOTE_ADDR']; if(isset($_SERVER['HTTP_CF_CONNECTING_IP'])){ $ip = $_SERVER['HTTP_CF_CONNECTING_IP']; } 回答1: The only way to do this would be to

PHP function to show both ipv4 ipv6

爱⌒轻易说出口 提交于 2020-01-05 02:49:11
问题 I am configuring a server to be dual stack, allowing both ipv4 and ipv6. Then, I want to create a php page to show if the client machine is conecting via ipv4, ipv6 or both. I have tried $_SERVER['REMOTE_ADDR'] and getenvbyhost("REMOTE_ADDR") as well, but it returns only one or another never both. I also tried the below code function isIPv6($ip) { if(filter_var($ip, FILTER_VALIDATE_IP)) { if(filter_var($ip, FILTER_FLAG_IPV6)) { //It is IPv6 indeed. } else { //It is IPv4 } } else { // Not a

Node.js其他模块

别等时光非礼了梦想. 提交于 2020-01-05 01:58:12
清明假期过得挺快,3天说没就没了,天热了今天把房间打扫了一下,看着挺舒心的。周六了解了下进程管理的Process模块,由于进程管理知识也比较多,今天先把其他的一些模块了解一下,进程管理这块以后慢慢学。 一、OS模块 OS模块主要是获取操作系统信息。 var os = require('os'); //返回一个指向操作系统默认临时目录的字符串 如果需要临时存储文件,然后再删除可以放在这 console.log("tmpdir :\t" + os.tmpdir()); //根据机器的体系结构,对于大端和小端编码,分别返回BE或LE console.log("endianness :\t" + os.endianness()); //机器的主机名 console.log("hostname :\t" + os.hostname()); //操作系统类型字符串类型 console.log("type :\t\t" + os.type()); //平台名称 字符串类型 console.log("platform :\t" + os.platform()); //体系结构 字符串类型 console.log("arch :\t\t" + os.arch()); //操作系统发布版本 console.log("release :\t" + os.release()); //操作系统已经运行多久