centos http 请求 装centos7
大家好,今天小编来为大家解答centos http 请求这个问题,装centos7很多人还不知道,现在让我们一起来看看吧!
详解如何在 CentOS 7 中安装或升级最新的内核
虽然有些人使用 Linux来表示整个操作系统,但要注意的是,严格地来说,Linux只是个内核。另一方面,发行版是一个完整功能的系统,它建立在内核之上,具有各种各样的应用程序工具和库。
在正常操作期间,内核负责执行两个重要任务:
作为硬件和系统上运行的软件之间的接口。
尽可能高效地管理系统资源。
为此,内核通过内置的驱动程序或以后可作为模块安装的驱动程序与硬件通信。
例如,当你计算机上运行的程序想要连接到无线网络时,它会将该请求提交给内核,后者又会使用正确的驱动程序连接到网络。
随着新的设备和技术定期出来,如果我们想充分利用它们,保持最新的内核就很重要。此外,更新内核将帮助我们利用新的内核函数,并保护自己免受先前版本中发现的漏洞的攻击。
准备好了在 CentOS 7或其衍生产品(如 RHEL 7和 Fedora)上更新内核了么?如果是这样,请继续阅读!
步骤 1:检查已安装的内核版本
让我们安装了一个发行版,它包含了一个特定版本的内核。为了展示当前系统中已安装的版本,我们可以:
?
1
# uname-sr
下面的图片展示了在一台 CentOS 7服务器上的输出信息:
如果我们现在进入 ,在撰写本文时,我们看到最新的内核版本是4.10.1(其他版本可以从同一网站获得)。
还要考虑的一个重要的事情是内核版本的生命周期-如果你当前使用的版本接近它的生命周期结束,那么在该日期后将不会提供更多的 bug修复。关于更多信息,请参阅内核发布页。
步骤 2:在 CentOS 7中升级内核
大多数现代发行版提供了一种使用yum等包管理系统和官方支持的仓库升级内核的方法。
但是,这只会升级内核到仓库中可用的最新版本-而不是在中可用的最新版本。不幸的是,Red Hat只允许使用前者升级内核。
与 Red Hat不同,CentOS允许使用 ELRepo,这是一个第三方仓库,可以将内核升级到最新版本。
要在 CentOS 7上启用 ELRepo仓库,请运行:
?
1
2
# rpm--import
# rpm-Uvh
在 CentOS 7启用 ELRepo
仓库启用后,你可以使用下面的命令列出可用的内核相关包:
?
1
# yum--disablerepo="*"--enablerepo="elrepo-kernel" list available
接下来,安装最新的主线稳定内核:
?
1
# yum--enablerepo=elrepo-kernel install kernel-ml
最后,重启机器并应用最新内核,接着运行下面的命令检查最新内核版本:
?
1
uname-sr
步骤 3:设置 GRUB默认的内核版本
为了让新安装的内核成为默认启动选项,你需要如下修改 GRUB配置:
打开并编辑/etc/default/grub并设置 GRUB_DEFAULT=0。意思是 GRUB初始化页面的第一个内核将作为默认内核。
?
1
2
3
4
5
6
GRUB_TIMEOUT=5
GRUB_DEFAULT=0
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="rd.lvm.lv=centos/root rd.lvm.lv=centos/swap crashkernel=auto rhgb quiet"
GRUB_DISABLE_RECOVERY="true"
接下来运行下面的命令来重新创建内核配置。
?
1
# grub2-mkconfig-o/boot/grub2/grub.cfg
重启并验证最新的内核已作为默认内核。
恭喜你!你已经在 CentOS 7中升级内核了!
总结
在本文中,我们解释了如何轻松升级系统上的 Linux内核。我们还没讲到另外一个方法,因为它涉及从源代码编译内核,这可以写成一本书,并且不推荐在生产系统上这么做。
虽然它是最好的学习体验之一,并且允许细粒度配置内核,但是你可能会让你的系统不可用,并且可能必须从头重新安装它。
Centos 虚拟化之 XEN
我还是一个视觉系的,很多东西都感觉知道,但不能好好的去表达,还是看图好一点。
上菜。。。
OK,这是一张关于xen的架构图(来自于马哥),从这张图上,我们可以看出xen是一个type-II的虚拟化实现,type-II是在硬件之上直接安装一个Hypervisor,再在Hypervisor上安装各Guest,可上面的图好像有点不同啊。
不错,在计算机的世界里,实际就是在实现现实世界中的各种事物,如简单的1+1,又如实现一个国家的信息管控,但计算机的世界和现实世界是完全不一样的,那么要在计算机的世界里实现现实世界的事物就不可能1:1的实现。人生活现实中,而计算机的世界却是人去构建的,如何完美。
这在计算机世界中处处可见.......
上面这么多的废话,就是xen为什么不是一个我们定义的type-II的标准样子。下面我们来说说原因,xen如何要做到一个标准的type-II,那么它就要能够和所有的硬件打交道,换句话说,就是要驱动所有的硬件,而硬件的驱动一般都是由硬件生产商开发的,
(这里开启吐槽模式,intel没有提供8代cpu的部分驱动对win7的支持,导致好长一段时间我们都不能愉快的玩耍,wan e de intel!)
linux对硬件的支持都不能说很好,linux不能说多普及,但在很多领域中也是广泛使用的,但有的硬件就是不支持。
那xen呢,它没法到找所有的硬件制造商让他们开发吧,那怎么办,自己开发吗?这是不可能完成的。
办法总比问题多,好吧,没有驱动,我就用别人的好了,于是就出现上面的那种结构,xen的hypervisor只负责对硬件cpu和内存的驱动,而其它硬件如:I/O设备等的驱动托管给了dom0(linux)。
半方大的空白 或 空白
全方大的空白 或 空白
不断行的空白 或 空白
Xen Hypervisor是直接运行在硬件与所有操作系统之间的基本软件层。它负责为运行在硬件设备上的不同种类的虚拟机(不同操作系统)进行CPU调度和内存分配。Xen Hypervisor对虚拟机来说不单单是硬件的抽象接口,同时也控制虚拟机的执行,让他们之间共享通用的处理环境。
Xen Hypervisor不负责处理诸如网络、外部存储设备、视频或其他通用的I/O处理。
Domain 0是经过修改的Linux内核,是运行在Xen Hypervisor之上独一无二的虚拟机,拥有访问物理I/O资源的特权,并且可以与其他运行在Xen Hypervisor之上的其他虚拟机进行交互。所有的Xen虚拟环境都需要先运行Domain 0,然后才能运行其他的虚拟客户机。
Domain 0在Xen中担任管理员的角色,它负责管理其他虚拟客户机。
在Domain 0中包含两个驱动程序,用于支持其他客户虚拟机对于网络和硬盘的访问请求。这两个驱动分别是Network Backend Driver和Block Backend Driver。 Network Backend Driver直接与本地的网络硬件进行通信,用于处理来自Domain U客户机的所有关于网络的虚拟机请求。根据Domain U发出的请求Block Backend Driver直接与本地的存储设备进行通信然后将数据读写到存储设备上。
Domain U客户虚拟机没有直接访问物理硬件的权限。所有在Xen Hypervisor上运行的半虚拟化客户虚拟机(简称:Domain U PV Guests)都是被修改过的基于Linux的操作系统、Solaris、FreeBSD和其他基于UNIX的操作系统。所有完全虚拟化客户虚拟机(简称:Domain U HVM Guests)则是标准的Windows和其他任何一种未被修改过的操作系统。
说了这么多,下面来说说安装,惯例,上菜...
因为这个源的针对性很强,而且其中有kernel的包,以免以后忘记出
现问题,关闭这个安装源,安装时使用"--enablerepo="来安装,另外这个repo源是Centos提供的,url为 ,慢就一个字,我只用镜像源。
呵呵...
一直一直就这个,好nb的启动界面(我无数次的以为死机了,无数次...,直到有一次启动的时候我去干其它事儿去了,回来一看,神奇的事情发生了,启动成功。我再呵呵)long long ago...过程我就不说了,不堪回首!
这样可以看到xen的启动
dom0的启动看不到
好吧这个问题跳过。。。。。(再次道歉ing...)
看来现在一切正常了可以建虚拟机了吧,go go go
第一步,神说:要有硬盘,于是就有了qemu-img
第二步,神还说:要有网卡,于是就有了我敲键盘
准备工作做完了,现在该我说了,写配置文件
找度娘,找啊找。。。说是使用vnc可以,好,改
5900开了,连上去
轻松愉快吧,可以好像还有很多的问题不是吗?
xl是什么?
sdl为什么不能用?
系统要怎么安装?
配置文件只能手写吗?
vnclisten='0.0.0.0',为什么要写这个?
如何生成每秒百万级别的 http 请求
在进行负责测试时要牢记一件重要的事:你能在 Linux上建立多少个 socket连接。这个**是硬编码在内核里的,最典型的就是临时 W端口的**。(在某种程度上)你可以在/etc/sysctl.conf里扩展它。但是基本上,一台 Linux机器只能同时打开大约 64,000个 socket。因此在负载测试时,我们不得不通过在单一的连接上尽可能多地发出请求来充分利用 socket。除此之外,我们还需要不止一台的机器来产生负载。否则,负载生成器会把可用的 socket占用导致不能产生足够的负载。
我一开始用的是‘ab’,Apache Bench。它是我所知道的 http基准测试工具中最简单、最通用的。并且它是 Apache附带的产品,因此它可能已经存在于你的系统中。不幸的是,我在使用它的时候每秒大约只能生成 900个请求。虽然我见过其他人使用它每秒能达到 2,000个请求,但我可以立即告诉你,‘ab’并不适合我们的基准测试。
Httperf
接着,我尝试了‘httperf’。这个工具更强大,但是它依然相对简单并且功能有限。要算出每秒生产了多少个请求并不是仅传递参数那么简单。经过我的多次尝试,获取了每秒超过几百请求的结果。例如:
它以每秒 1,000个的速率创建了 100,000个会话(session)。每次会话发起 5次请求,时间间隔为 2秒。
httperf--hog--server=192.168.122.10--wsess=100000,5,2--rate 1000--timeout 5
Total: connections 117557 requests 219121 replies 116697 test-duration 111.423 s
Connection rate: 1055.0 conn/s(0.9 ms/conn,<=1022 concurrent connections)
Connection time [ms]: min 0.3 avg 865.9 max 7912.5 median 459.5 stddev 993.1
Connection time [ms]: connect 31.1
Connection length [replies/conn]: 1.000
Request rate: 1966.6 req/s(0.5 ms/req)
Request size [B]: 91.0
Reply rate [replies/s]: min 59.4 avg 1060.3 max 1639.7 stddev 475.2(22 samples)
Reply time [ms]: response 56.3 transfer 0.0
Reply size [B]: header 267.0 content 18.0 footer 0.0(total 285.0)
Reply status: 1xx=0 2xx=116697 3xx=0 4xx=0 5xx=0
CPU time [s]: user 9.68 system 101.72(user 8.7% system 91.3% total 100.0%)
Net I/O: 467.5 KB/s(3.8*10^6 bps)
最终,我使用这些设置达到了每秒 6,622个连接:
httperf--hog--server 192.168.122.10--num-conn 100000--ra 20000--timeout 5
(总共创建了 100,000个连接,并且以每秒 20,000个连接的固定速率创建)
它还有一些潜在的优势,并且拥有比‘ab‘更多的特性。但它不是我要用在这个项目里的重量级工具。我需要的是能够支持分布式多负载测试节点的工具。因此,我的下一个尝试是:Jmeter。
Apache Jmeter
这是一个功能齐全的 web应用测试套件,它可以模拟真实用户的所有行为。你可以使用 Jmeter的代理去访问你的网站,进行点击、登陆、模仿用户可以做的所有行为。Jemeter会把这些行为记录下来作为测试用例。然后 Jmeter会反复执行这些动作来模拟你想要的用户数量。尽管配置 Jmeter比‘ab‘和’httperf‘复杂得多,但它是一个很有趣的工具!
根据我的测试,它每秒可以产生 14,000个请求!这绝对是一个好的进展。
我使用了 Googlle Code project上的一些插件,并且使用它们的“Stepping Threads”和“HTTP RAW”请求,最终每秒大约可以产生 30,000个请求!但这已经达到极限了,所以还要寻找另一个工具。这里有一个我之前的 Jmeter配置,希望可以帮助到其他人。虽然这个配置离完美相差甚远,但有时它可以满足你的要求。
Tsung:重型的(heavy-duty)、分布式的、多协议测试工具
它每秒基本可以产生 40,000个请求,这绝对是我们想要的工具。类似于 Jmeter,你可以把一些行为记录下来在测试时运行,并且可以测试大多数的协议。比如 SSL、HHTP、WebDAV、SOAP、PostgreSQL、MySQL、LDAP和 Jabber/XMPP。与 Jmeter不同的是,它没有让人感到迷茫的 GUI设置,它仅有一个 XML配置文件,和一些你选择的分布式节点的 SSH密钥。它的简洁和效率对我的吸引力,完全不亚于它的健壮性和可扩展性。我发现它是一个很强大的工具,在正确的配置下它可以每秒产生百万级的 HTTP请求。
除此之外,Tsung还可以在 html上产生图表以及输入你的测试的详细报告。测试的结果通俗易懂,并且你甚至可以把这些图片展示给你的 boss看!
在这个系列文章的剩余部分,我还会讲解这个工具。现在你可以继续浏览下面的配置说明,或者直接跳到下一页。
在 CentOS 6.2上安装 Tsung
首先,你要安装(Erlang需要的) EPEL源。因此,在进行下一步之前要把它安装好。安装完后,继续安装你用来产生负载的每个节点需要的包。如果你还没有在节点之间建立无密码 SSH密钥(passwordless SSH key),那么请建立之。
yum-y install erlang perl perl-RRD-**.noarch perl-Log-Log4perl-RRDs.noarch gnuplot perl-Template-Toolkit firefox
从 Github或者 Tsung的官网上下载最新的 Tsung。
wget
解压并且编译。
tar zxfv tsung-1.4.2.tar.gz
cd tsung-1.4.2
./configure&& make&& make install
把示例配置复制到~/.tsung目录里。这是 Tsung的配置文件和日志文件的存放地方。
cp/usr/share/doc/tsung/examples/http_**.xml/root/.tsung/tsung.xml
你可以根据你的需求去编辑这个配置文件,或者使用我的配置文件。经过大量的尝试以及失败后,我目前的配置文件在使用 7个分布式节点时可以每秒产生 5百万个 HTTP请求。
<?xml version="1.0"?>
<!DOCTYPE tsung SYSTEM"/usr/share/tsung/tsung-1.0.dtd">
<tsung loglevel="notice" version="1.0">
<clients>
<client host="localhost" weight="1" cpu="10" maxusers="40000">
<ip value="192.168.122.2"/>
</client>
<client host="loadnode1" weight="1" cpu="9" maxusers="40000">
<ip value="192.168.122.2"/>
</client>
<client host="loadnode2" weight="1" maxusers="40000" cpu="8">
<ip value="192.168.122.3"/>
</client>
<client host="loadnode3" weight="1" maxusers="40000" cpu="9">
<ip value="192.168.122.21"/>
</client>
<client host="loadnode4" weight="1" maxusers="40000" cpu="9">
<ip value="192.168.122.11"/>
</client>
<client host="loadnode5" weight="1" maxusers="40000" cpu="9">
<ip value="192.168.122.12"/>
</client>
<client host="loadnode6" weight="1" maxusers="40000" cpu="9">
<ip value="192.168.122.13"/>
</client>
<client host="loadnode7" weight="1" maxusers="40000" cpu="9">
<ip value="192.168.122.14"/>
</client>
</clients>
<servers>
<server host="192.168.122.10" port="80" type="tcp"/>
</servers>
<load>
<arrivalphase phase="1" duration="10" unit="minute">
<users maxnumber="15000" arrivalrate="8" unit="second"/>
</arrivalphase>
<arrivalphase phase="2" duration="10" unit="minute">
<users maxnumber="15000" arrivalrate="8" unit="second"/>
</arrivalphase>
<arrivalphase phase="3" duration="30" unit="minute">
<users maxnumber="20000" arrivalrate="3" unit="second"/>
</arrivalphase>
</load>
<sessions>
<session probability="100" name="ab" type="ts_http">
<for from="1" to="10000000" var="i">
<request><http url="/test.txt" method="GET" version="1.1"/></request>
</for>
</session>
</sessions>
</tsung>