Articles of networking

如何限制命令行应用程序可以在Linuxnetworking服务器上使用的资源

这是情况: 我有一个(PHP / MySQL)的Web应用程序,做一些PDF处理和缩略图创build。 这是通过在服务器上使用一些第三方命令行软件来完成的。 这两种处理消耗大量的资源,以至于窒息服务器。 我想限制这些应用程序可以使用的资源数量,以使服务器能够保持服务用户不会有太多的延迟,因为现在当处理一些重的pdf时,我的用户没有得到任何回应。 是否可以限制应用程序可以使用的RAM和CPU的数量(所有进程组合)? 还是有另一种方法来处理这种情况? 这通常如何完成?

基于libpcap的嗅探器是否可以用于基于拨号的Internet连接

我正在写一个使用libpcap的http-sniffer。 我不知道它会工作,如果用户使用基于拨号的互联网连接

最快的方式来读取networking数据?

我有什么替代方法可以在最快的时间内读取数据包? 在用户空间中写驱动程序? 我从来没有写过网卡的驱动程序(但是如果不像编写整个操作系统那样困难,我会感兴趣?)。 我可以获得已经存在的驱动程序代码,这些驱动程序代码必须存在于Linux的某处,并将其“移植”到用户空间中? Linux内核驱动程序和我的驱动程序都试图竞争相同的数据包? 不写驱动程序,而是从C / C ++应用程序堆栈之后立即访问networking数据? 我对这种方法不太了解,所以如果有人能帮到我,我会感兴趣的。 我有兴趣实现我自己的零拷贝技术,以尽可能快地获取分组数据。 这台计算机不需要使用普通的networking,它可能是两台计算机之间的专有networking连接(对于TCP和UDP)。 编辑: 我的意思是延迟 ,不是吞吐量

在Linux中,如果没有使用GDB进行实时debugging,在挂起时如何findC程序的状态?

我们有一个古老的networking应用程序(一台机器上运行的客户端程序和另一台服务器程序)。 它通常工作正常,但在罕见的情况下,它挂起。 我们尚未确定究竟是什么原因造成的。 这是用C编写的普通的旧套接字编程 问题是,我们不能重现这一点,有时只是发生。 挂起时,我能做些什么来找出服务器和客户端程序(挂起的代码块)的状态? 连接到debugging器是不可能的由于各种原因(程序立即需要被终止释放被阻止的端口)。 我刚刚读了一下gcore,我会试试看。 任何更好的想法? 更新:gcore(或其他方式来生成核心转储)工作得很好。

为什么gethostbyname和gethostbyaddr被认为是过时的?

手册页gethostbyname (3)指出函数gethostbyname和gethostbyaddr已经过时,应该使用getaddrinfo (3)和getnameinfo (3)来代替。 但是,它并没有解释前者过时的原因。 任何人都可以请我指出一些资源,进一步解释这件事?

getprotobyname的主机

我在我的项目中遇到了一个小小的死胡同。 我需要在networking中检索任何给定设备(使用Linux内核)支持的协议。 我知道getprotobyname方法做的工作,但与我目前的知识,我只是成功地实现它来获得代码运行本地机器的协议细节。 代码如下, #include <stdio.h> #include <netdb.h> int main (int argc, char *argv[]) { int i; struct protoent *proto = getprotobyname("ipv6"); if ( proto != NULL ) { printf("Official name: %s\n", proto->p_name); printf("Port#: %d\n", proto->p_proto); for ( i = 0; proto->p_aliases[i] != 0; i++ ) . printf("Alias[%d]: %s\n", i+1, proto->p_aliases[i]); } else perror("protocol not […]

从没有从内核空间到用户空间的关联memcpy的套接字读取

在Linux中,有没有办法从套接字中读取数据,同时避免从内核空间到用户空间的隐式memcpy数据? 那就是,而不是做 ssize_t n = read(socket_fd, buffer, count); 这显然需要内核从networking缓冲区执行一个memcpy到我提供的缓冲区,我会做类似的事情 ssize_t n = fancy_read(socket_fd, &buffer, count); 并返回缓冲区指向从networking接收到的非memcpy()'ed数据。

无法从同一局域网上的Linux机器ping Windows 7机器

所有防火墙都closures。 我在同一个172.xxx局域网上有3台Fedora 20机器和1台Windows 7机器。 他们都有静态IP地址和相同的子网。 (255.255.255.0) Fedora机器可以互相ping通。 Windows 7机器可以ping所有3个Fedora机器。 然而,Fedora机器无法ping通Windows 7机器。 我得到的答复:目的地主机无法访问。 我在Windows机器上运行Wireshark。 从Windows到Fedora ping时,ICMP消息显示出来,而不是相反。 更复杂的是,所有的机器都有第二个networking适配器连接到第二个10.xxxnetworking。 在这个networking上,所有的机器都可以互相ping通,Windows到Fedora和Fedora到Windows。 这只是Fedora机器无法ping Windows机器的172.xnetworking。 我知道那里已经有大量的“无法ping”问题的post,但是我一直无法find任何有助于解决这个问题的方法。 或者当我这样做的时候,事实certificate这是一个防火墙问题,而且这些机器上没有运行防火墙。 有什么想法吗? 谢谢。

如何检查两个Linux服务器之间的端口是否打开?

当你不能使用telnet或安装仙客来时,你如何检查端口是否打开? 我想看看两个Linux服务器之间的端口是否打开。 Telnet没有安装。 我试过这个命令: cat < /dev/tcp/xxxx/6061 其中xxxx是Linux服务器的远程IP地址,端口6061是我想testing的端口。 但是根据对已知工作而不工作的港口的testing,这个命令对我来说并不是确定的。 这可能是一个环境的解释。

如何调整NAPI的投票时间?

我可以理解,Linux中的NAPI将从中断变为轮询模式,以处理高数据包速率。 NAPI使用权重决定每个轮询周期处理多less个数据包; 它还确保每个投票期内的数据包处理不到一个jiffies。 但是,我无法在任何地方find(谷歌)NAPI的投票期限是多less? 我们可以将投票期限改变为我们想要的任何价值吗? 非常感谢您的帮助! 从我所观察到的看来,NAPI的投票时间似乎是2秒,但我想确保我的观察是正确的。