这是我的司机信息。
ethtool -i ethXX
driver: ixgbe
version: 3.9.15-NAPI
firmware-version: 0x800000a5
bus-info: 0000:04:00.0
supports-statistics: yes
supports-test: yes
supports-eeprom-access: yes
supports-register-dump: yes
Run Code Online (Sandbox Code Playgroud)
现在我有 1/1.5 Gbps(每秒 75k 数据包)的平均流量到达这个接口,我可以看到一个/或多个 ksoftirqd 线程达到 100%。
我尝试启用 rx-usecs/rx-frames 选项,但没有改进。有点延迟对我来说不是问题。我只想减少 ksoftirqd 的使用。
我看到 rx-usecs 的限制是 1022,这是之后应该触发下一个中断的 usecs(这是我的理解,如果我错了,请纠正我)。虽然它不能解决我的问题。
另一方面,此驱动程序不支持 rx 帧。也不支持“adaptive-rx”。
我应该关注的下一步是什么?任何帮助是极大的赞赏。
我们有高流量网站的服务器。最近我们从
2 x 4 核服务器(/proc/cpuinfo 中的 8 核),32 GB RAM,运行 CentOS 5.x,以
2 x 4 核服务器(/proc/cpuinfo 中有 16 核),32 GB RAM,运行 CentOS 6.3
运行 nginx 作为代理的服务器、mysql 服务器和 sphinx-search。
流量很高,但 mysql 和 sphinx-search 数据库相对较小,通常一切都运行得非常快。
今天服务器的平均负载为 100++。查看 top 和 sar,我们注意到 (%sys) 非常高 - 50% 到 70%。磁盘利用率不到 1%。我们尝试重新启动,但重新启动后问题存在。在任何时候服务器至少有 3-4 GB 的可用内存。
只有 dmesg 显示的消息是“端口 80 上可能发生 SYN 泛洪。正在发送 cookie。”。
这是sar的片段
11:00:01 CPU %user %nice %system %iowait %steal %idle
11:10:01 all 21.60 0.00 66.38 0.03 0.00 11.99
Run Code Online (Sandbox Code Playgroud)
我们知道这是交通问题,但我们不知道将来如何进行以及在哪里检查解决方案。
有没有办法我们可以找到那些“66.38%”的确切使用位置。
任何建议,将不胜感激。
更新:今天平均负载“正常”,“sys%”也正常~4%。然而,今天的流量比昨天减少了大约 20-30%。这让我觉得昨天的问题是因为 TCP 的一些内核设置。
编辑:就在我完成这篇超长的帖子时,我解决了我的问题。我根本没有在我的 Windows 防火墙中启用 ping 回复,这就是为什么我无法从网络 1 或 2 ping 网络 0 上的计算机(见下文)。当然,当我尝试 ping 网络 0 上的互联网路由器时,它不起作用,因为我忽略了在其上设置非默认网关,就像我在 Windows 上设置的一样。
所以,我给你一个“正确”的方法来设置一个 linux box 作为子网之间的简单网关。请记住在客户端上正确设置所有网关(简单规则:默认网关应该是到 Internet 的路由,然后为连接到子网中其他网关的每个子网设置 1 个网关。
我正在创建一个带有连接 3 个子网的 Ubuntu linux 机器的测试网络。这是我的拓扑:
***********************
* Internet Router *
* 192.168.2.1 *
***********************
* ***************
* * Client 0 *
*************** *192.168.2.117*
* Switch * * * * * * * Windows *
*************** ***************
*
* 192.168.2.0/24 = Network 0
*
Network 1 *************** Network 2
192.168.1.0/24 * eth0 * 10.25.0.0/16 …Run Code Online (Sandbox Code Playgroud) root@new [~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
178.18.23.200 0.0.0.0 255.255.255.255 UH 0 0 0 eth0
178.18.23.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
169.254.0.0 0.0.0.0 255.255.0.0 U 1002 0 0 eth0
176.0.0.0 0.0.0.0 248.0.0.0 U 0 0 0 eth0
0.0.0.0 178.18.23.253 0.0.0.0 UG 0 0 0 eth0
Run Code Online (Sandbox Code Playgroud)
我可以删除 176.0.0.0 条目
route delete -net 176.0.0.0/5
Run Code Online (Sandbox Code Playgroud)
这有效,但重启后这条线又回来了。知道如何永久删除它吗?
我自己是 wmic 的新手,并一直尝试使用默认代理查询方法。
wmic 是基于 linux 的 WMI 工具,用于与 windows WMI 代理交谈。在尝试使用 wmic 从 nt(运行 WMI 服务的 win7)获取数据时,它显示在所有情况下都拒绝访问。
问题是可能的原因是什么,是防火墙端口、WMI 组、文件或用户权限还是其他原因?任何类型的提示都会非常有帮助。
[root@rhel6 wmic]# wmic -U nt-login-name% //nt-primary-ip "select caption, name, parentprocessid, processid from win32_process"
[librpc/rpc/dcerpc_util.c:1290:dcerpc_pipe_auth_recv()] Failed to bind to uuid 4d9f4ab8-7d1c-11cf-861e-0020af6e7c57 - NT_STATUS_NET_WRITE_FAULT
[librpc/rpc/dcerpc_connect.c:790:dcerpc_pipe_connect_b_recv()] failed NT status (c0000022) in dcerpc_pipe_connect_b_recv
[wmi/wmic.c:196:main()] ERROR: Login to remote object.
NTSTATUS: NT_STATUS_ACCESS_DENIED - Access denied
Run Code Online (Sandbox Code Playgroud) 上下文 - 我正在尝试在 MacOSX 上运行 docker 集群。
运行 docker 的安装过程的一部分是安装pipework。
管道依赖 /var/run/netns
我的问题是:Mac OS X 是否有等效的 netns?
我想将 infiniband 传递到 docker 容器,以便我可以通过 ipoib 运行一些高性能应用程序并使用 rdma。
目前,我正在使用 xen 虚拟机执行此操作。现在我正在考虑使用 CoreOS 和 docker 作为重量更轻且更易于管理的替代方案。
我有一个 IPoIB 设备 ib0,分配给它的静态 IP 为 10.10.10.10。我已经设法通过以下方式将其暴露在 docker 容器中:
docker run --net=host --device=/dev/infiniband/uverbs0 --device=/dev/infiniband/rdma_cm -t -i ubuntu:14.04 /bin/bash
太好了,这有效。ib0 在 docker 容器内可用。
现在假设我有一个双端口 HCA。在主机上,它们显示为 ib0 和 ib1,并分配了两个 ip。10.10.10.10/ib0 和 10.10.10.11/ib1
现在我想将 ib0 传递给第一个容器,将 ib1 传递给第二个。由于 --net=host 选项,使用上述方法两者都会出现在两个容器中。但是,不指定它意味着设备根本不会出现。
另一种情况是我有很多机器使用 SR-IOV 将 infiniband 设备传递到 xen 虚拟机。我如何才能将虚拟功能 infiniband 设备传递给 docker 容器并使其出现?
注意:管道在这种情况下不起作用,但如果我更好地理解它,它可能会被黑客入侵以做我想做的事。我只是不太明白它在做什么......还没有。
我正在尝试在具有两个网关的 linux 路由器上对来自内部 LAN 的流量进行负载平衡。最初我选择了 iproute 实现,它没有按预期平衡负载,原因是路由被缓存。
现在我使用 iptables 使用 CONNMARK 标记每个新连接,然后添加规则以通过不同的网关路由这些标记的连接。
Eth0 - 局域网,Eth1 - ISP1,Eth2 - ISP2
以下是我正在使用的脚本,
#!/bin/bash
echo 1 >| /proc/sys/net/ipv4/ip_forward
echo 0 >| /proc/sys/net/ipv4/conf/all/rp_filter
# flush all iptables entries
iptables -t filter -F
iptables -t filter -X
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X
iptables -t filter -P INPUT ACCEPT
iptables -t filter -P OUTPUT ACCEPT
iptables -t filter -P FORWARD ACCEPT
# initialise chains that …Run Code Online (Sandbox Code Playgroud) 如何使用 firewall-cmd 工具(新的 firewalld)创建防火墙规则,以便限制特定网络仅访问一项服务,并允许一个区域中的所有服务。
例如:
我只有一个接口 eno1,它与公共区域相关联。该区域启用了 Http 和 https 服务。我想在该区域启用 ssh 访问,但我想限制对网络的 ssh 访问(例如 100.0.0.0/8)
做这个的最好方式是什么?