iNet

发行版Linux和麒麟操作系统下netperf 网络性能测试

亡梦爱人 提交于 2020-05-07 20:10:51
发行版Linux和麒麟操作系统下netperf 网络性能测试 Netperf是一种网络性能的测量工具,主要针对基于TCP或UDP的传输。Netperf根据应用的不同,可以进行不同模式的网络性能测试,即批量数据传输(bulk data transfer)模式和请求/应答(request/reponse)模式。 工作原理 Netperf工具以client/server方式工作。server端是netserver,用来侦听来自client端的连接,client端是netperf,用来向server发起网络测试.在client与server之间,首先建立一个控制连接,传递有关测试配置的信息,以及测试的结果:在控制连接建立并传递了测试配置信息以后,client与server之间会再建立一个测试连接,进行来回传递特殊的流量模式,以测试网络的性能 软件安装 下载安装Netperf工具   下载链接: ftp: //ftp.netperf.org/netperf/   [root @xiesshavip001 ~]# wget ftp: //ftp.netperf.org/netperf/netperf-2.7.0.tar.gz 安装依赖包gcc cc   [root @xiesshavip001 ~] # yum install gcc cc -y 解压安装     发行版Linux

mysql主从之keepalive+MySQL高可用

牧云@^-^@ 提交于 2020-05-07 02:40:53
一 keepalive介绍 1.1 keepalived 是什么 keepalived 是集群管理中保证集群高可用的一个服务软件,用来防止单点故障。 1.2 keepalived 工作原理 keepalived 是以VRRP 协议为实现基础的,VRRP 全称VirtualRouter Redundancy Protocol,即虚拟路由冗余协议。虚拟路由冗余协议,可以认为是实现路由器高可用的协议,即将N 台提供相同功能的路由器组成一个路由器组,这个组里面有一个master 和多个backup,master 上面有一个对外提供服务的vip(该路由器所在局域网内其他机器的默认路由为该vip),master 会发组播,当backup 收不到vrrp 包时就认为master 宕掉了,这时就需要根据VRRP 的优先级来选举一个backup 当master。这样的话就可以保证路由器的高可用了。 keepalived 主要有三个模块,分别是core、check 和vrrp。 core 模块为keepalived 的核心,负责主进程的启动、维护以及全局配置文件的加载和解析。 check 负责健康检查,包括常见的各种检查方式。 vrrp 模块是来实现VRRP 协议的。 1.3 实验环境 master1:192.168.132.121 master2:192.168.132.122 虚拟IP:192

centos7搭建keepalived高可用nginx负载均衡集群

时光怂恿深爱的人放手 提交于 2020-05-07 02:36:59
  昨天在公司内部分享了高可用负载均衡,现将环境搭建过程记录一下。    本文主要讲keepalived高可用,与keepalived自检的脚本。 环境: web01: 10.8.8.51 centos7.3   #web服务器01 web02: 10.8.8.52 centos7.3   #web服务器02 proxy01:10.8.8.90 centos7.3 vip:10.8.8.55   #nginx负载均衡主服务器,keepalived主服务器 proxy02:10.8.8.91 centos7.3 vip:10.8.8.55   #nginx负载均衡备服务器,keepalived备服务器 一、web01、web02环境搭建    由于本文主讲keepalived高可用,环境搭建过程忽略。    web01、web02各自搭建一个简单的web,域名均为: www.test.com 分别测试单机访问是否成功。 二、配置nginx负载均衡    在10.8.8.90和10.8.8.91主机上,分别配置nginx负载均衡。简单配置如下。分别测试负载均衡是否成功。 upstream backend { server 10.8 . 8.51 : 80 max_fails= 3 fail_timeout= 30s; server 10.8 . 8.52 : 80 max_fails=

RHEL8网络配置

為{幸葍}努か 提交于 2020-05-07 02:00:57
在RHEL8中继续支持service,网络相关服务管理已经转移到NetworkManager不再是network了,本文档详细介绍RHEL8网络配置。 环境 Red Hat Enterprise Linux release 8.0 VMware Workstation Pro 14 在RHEL8中继续支持service 网络相关服务管理已经转移到NetworkManager不再是network了 修改网卡配置文件,重启NetwrokManager服务新IP不生效! [root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33 TYPE=Ethernet PROXY_METHOD=none BROWSER_ONLY=no BOOTPROTO=static DEFROUTE=yes IPV4_FAILURE_FATAL=no IPV6INIT=yes IPV6_AUTOCONF=yes IPV6_DEFROUTE=yes IPV6_FAILURE_FATAL=no IPV6_ADDR_GEN_MODE=stable-privacy NAME=ens33 UUID=eb51f723-244d-4a71-bf8d-c18593c64859 DEVICE=ens33 ONBOOT=yes IPADDR=192.168

【Linux 网络编程】TCP网络编程中connect()、listen()和accept()三者之间的关系

雨燕双飞 提交于 2020-05-06 00:23:46
基于 TCP 的网络编程开发分为服务器端和客户端两部分,常见的核心步骤和流程如下: connect()函数: 对于 客户端 的 connect() 函数,该函数的功能 为客户端主动连接服务器 ,建立连接是通过三次握手,而这个连 接的过程是由内核完成,不是这个函数完成的,这个函数的作用仅仅是通知 Linux 内核,让 Linux 内核自动完成 TCP 三次握手连接 ,最后把连接的结果返回给这个函数的返回值(成功连接为0, 失败为-1)。 通常的情况,客户端的 connect() 函数默认会 一直阻塞,直到三次握手成功或超时失败才返回 (正常的情况,这个过程很快完成)。 listen()函数: 对于服务器,它是被动连接的。举一个生活中的例子,通常的情况下,移动的客服(相当于服务器)是等待着客户(相当于客户端)电话的到来。而这个过程,需要调用listen()函数。 1 #include<sys/socket.h> 2 int listen( int sockfd, int backlog); listen() 函数的主要作用就是 将套接字( sockfd )变成被动的连接监听套接字(被动等待客户端的连接) ,至于参数 backlog 的作用是 设置内核中连接队列的长度 (这个长度有什么用,后面做详细的解释), TCP 三次握手也不是由这个函数完成,listen(

Linux中,Tomcat 怎么承载高并发(深入Tcp参数 backlog)

有些话、适合烂在心里 提交于 2020-05-05 23:20:16
一、前言 这两天看tomcat,查阅 tomcat 怎么承载高并发时,看到了backlog参数。我们知道,服务器端一般使用mq来减轻高并发下的洪峰冲击,将暂时不能处理的请求放入队列,后续再慢慢处理。其实操作系统已经帮我们做了一些类似的东西了,这个东西就是backlog。服务端一般通过 accept 调用,去获取socket。但是假设我们的程序处理不过来(比如因为程序bug,或者设计问题,没能及时地去调用 accept),那么此时的网络请求难道就直接丢掉吗? 当然不会!这时候,操作系统会帮我们放入 accept 队列,先暂存起来。等我们的程序缓过来了,直接调用 accept 去 队列取就行了,这就达到了类似mq的效果。 而 backlog,和另一个参数 /proc/sys/net/core/somaxconn 一起,决定了队列的容量,算法为:min(/proc/sys/net/core/somaxconn, backlog) 。 文章比较长,如果只需要结论,看第三章的总结即可,有时间的话,可以仔细看看正文、第四章的验证部分。 如果只想知道怎么设置这个值,直接跳到最后即可。 下面这篇文章,基础原理讲得很不错。但是是外国人写的,我这里简(tong)单(ku)翻译一下,我也会结合自己的理解,做一些补充。原文链接: http://veithen.io/2014/01/01/how-tcp

RHEL8网络配置

我怕爱的太早我们不能终老 提交于 2020-05-05 16:46:00
在RHEL8中继续支持service,网络相关服务管理已经转移到NetworkManager不再是network了,本文档详细介绍RHEL8网络配置。 环境 Red Hat Enterprise Linux release 8.0 VMware Workstation Pro 14 在RHEL8中继续支持service 网络相关服务管理已经转移到NetworkManager不再是network了 修改网卡配置文件,重启NetwrokManager服务新IP不生效! [root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33 TYPE=Ethernet PROXY_METHOD=none BROWSER_ONLY=no BOOTPROTO=static DEFROUTE=yes IPV4_FAILURE_FATAL=no IPV6INIT=yes IPV6_AUTOCONF=yes IPV6_DEFROUTE=yes IPV6_FAILURE_FATAL=no IPV6_ADDR_GEN_MODE=stable-privacy NAME=ens33 UUID=eb51f723-244d-4a71-bf8d-c18593c64859 DEVICE=ens33 ONBOOT=yes IPADDR=192.168

Linux服务器更换主板后,网卡识别失败的处理方法

浪尽此生 提交于 2020-05-05 13:39:59
1)现象说明 公司IDC机房里的一台线上服务器硬件报警,最后排查发现服务器主板坏了,随即联系厂商进行更换主板,最后更换后,登录服务器,发现网卡绑定及ip信息都在,但是ip却ping不通了,进一步排查,重启网卡, 提示之前的eth0和eth1网卡设备发现不了了,也就是说服务器主板更换后,之前的网卡设备都识别不了了 ! 主板更换后,重启并登陆服务器,发现之前的网卡设备(eth0、eth1、eth2、eth3)都没有了! [root@kevin01 ~]# ifconfig -a bond0 Link encap:Ethernet HWaddr 08:94:EF:5E:AE:72 inet addr:192.168.10.20 Bcast:192.168.10.255 Mask:255.255.255.0 inet6 addr: fe80::a94:efff:fe5e:ae72/64 Scope:Link UP BROADCAST RUNNING MASTER MULTICAST MTU:1500 Metric:1 RX packets:75582 errors:0 dropped:0 overruns:0 frame:0 TX packets:58537 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0

网络协议及tcp协议详解(超清楚的大图,难得还解释了会话层和表示层。服务端有一个保活计时器,时间通常是设置为2小时。发送一个探测报文段,以后每隔75秒钟发送一次,一连发送10个探测报文)

↘锁芯ラ 提交于 2020-05-05 10:12:41
问题来源:面试中面试官会看到你的简历上写着熟悉网络、http、tcp协议等,那你真的了解他吗?今天它来了 一、网络协议: 层次说明: 第七层:应用层(http) 为操作系统或网络应用程序提供访问网络服务的接口。 第六层:表示层 处理两个通信系统中交换信息的表示方式。为上层用户解决用户信息的语法问题。包括数据格式交换、数据加密与解密、数据压缩与终端类型的转换。 第五层:会话层 在两个节点之间建立端连接。为端系统的应用程序之间提供了对话控制机制。会话层不参与具体的传输,它提供包括访问验证和会话管理在内的建立和维护应用之间通信的机制。如服务器验证用户登录便是由会话层完成的。 第四层:传输层(tcp) 为会话层用户提供一个端到端的可靠、透明和优化的数据传输服务机制。 第三层:网络层 网络层的任务就是选择合适的网间路由和交换结点, 确保数据及时传送。 第二层:数据链路层 在物理层提供比特流服务的基础上,建立相邻结点之间的数据链路,通过差错控制提供数据帧在信道上无差错的传输,并进行各电路上的动作系列。数据链路层在不可靠的物理介质上提供可靠的传输。该层的作用包括:物理地址寻址、数据的成帧、流量控制、数据的检错、重发等。 第一层:物理层 物理层的主要功能是利用物理传输介质为数据链路层提供物理连接,以便透明的传送比特流。 二、tcp协议: 三次握手(three-way handshake)

Three patterns for using libevent

戏子无情 提交于 2020-05-05 07:41:10
pattern 1 client #include<sys/types.h> #include <sys/socket.h> #include <netinet/ in .h> #include <arpa/inet.h> #include <errno.h> #include <unistd.h> #include <stdio.h> #include < string .h> #include <stdlib.h> #include < event .h> #include <event2/util.h> int tcp_connect_server( const char * server_ip, int port); void cmd_msg_cb( int fd, short events, void * arg); void socket_read_cb( int fd, short events, void * arg); int main( int argc, char ** argv) { if ( argc < 3 ) { printf( " please input 2 parameter\n " ); return - 1 ; } // 两个参数依次是服务器端的IP地址、端口号 int sockfd = tcp_connect_server(argv[ 1