在Xen下,我的服务器可以接受()新的传入TCP连接的速率真的很糟糕。 裸机硬件上的相同testing显示3-5倍的加速。 Xen在Xen下如此糟糕? 你可以调整Xen以提高新TCP连接的性能吗? 还有其他虚拟化平台更适合这种用例吗? 背景 最近我一直在研究在Xen下运行的内部开发的Java服务器的性能瓶颈。 服务器会说HTTP并回答简单的TCP连接/请求/响应/断开连接呼叫。 但即使在向服务器发送stream量时,每秒钟也不能接受超过约7000个TCP连接(在一个8核EC2实例,运行Xen的c1.xlarge上)。 在testing期间,服务器也performance出奇怪的行为,其中一个核心(不一定是cpu 0)非常负载> 80%,而其他核心几乎空闲。 这使我认为这个问题与内核/底层虚拟化有关。 当在裸机上testing相同的场景时,我得到的testing结果显示TCP接受速率超过35000 /秒。 在一台运行Ubuntu的Core i5 4核心机器上,所有内核几乎全部饱和。 对我来说,这种数字似乎是正确的。 再次在Xen实例上,我已经试过启用/调整几乎sysctl.conf中的所有设置。 包括启用接收数据包转向和接收stream量转向 ,并将线程/进程固定到CPU,但没有明显的收益。 我知道虚拟化运行时性能会下降。 但是到了这个程度? 速度较慢的裸机服务器性能优于虚拟化技术。 8核的系数是5? 这真的是Xen的预期行为? 你可以调整Xen以提高新TCP连接的性能吗? 还有其他虚拟化平台更适合这种用例吗? 重现这种行为 当进一步调查和指出问题时,我发现netperf性能testing工具可以模拟我遇到的类似情况。 使用netperf的TCP_CRRtesting我收集了来自不同服务器(虚拟化和非虚拟化)的各种报告。 如果您想提供一些调查结果或查看我目前的报告,请参阅https://gist.github.com/985475 我怎么知道这个问题不是由于写得不好的软件造成的? 该服务器已经在裸机硬件上进行过testing,并且几乎饱和了所有可用的内核。 当使用保持活动的TCP连接时,问题就会消失。 为什么这很重要? 在ESN (我的雇主),我是用Java编写的Comet / Web Socket服务器Beaconpush的项目负责人。 即使它性能非常好,在最佳条件下几乎可以使任何带宽达到饱和,但仍然限于新的TCP连接速度。 也就是说,如果用户stream失频繁,那么很多TCP连接将不得不build立起来。 我们尽量减less这种保持连接的活力。 但最后,accept()的性能是让我们的内核不能旋转,我们不喜欢这样做。 更新1 有人把这个问题发给了黑客新闻 ,那里也有一些问题/答案。 但是,我会尽量保持这个问题的最新信息,随着我的发现。 硬件/平台我已经testing了这个: EC2,实例types为c1.xlarge(8核,7 GB RAM)和cc1.4xlarge(2x Intel […]
在具有多个系统pipe理员的环境中,将服务器configuration文件添加到版本控制系统中看到了一些优势。 最值得注意的是追踪变化的能力,是谁制造的,当然也可以回滚到已知的工作configuration。 我主要对Unix / Linux解决scheme感兴趣,但也会对Windows实现感到好奇。
我正在寻找一种可靠和便携的方式来检查GNU / Linux和其他系统上的OpenSSL版本,因此用户可以很容易地发现是否应该升级他们的SSL,因为Heartbleed错误。 我认为这很容易,但是我很快在最新的OpenSSL 1.0.1g的Ubuntu 12.04 LTS上遇到了一个问题: openssl版本-a 我期待看到一个完整的版本,但是我得到了这个: OpenSSL 1.0.1 2012年3月14日 build立于:2013年6月4日星期二07:26:06 UTC 平台:[…] 令我不愉快的惊喜,版本信不显示。 不,没有,只是“1.0.1”就是这样。 列出的date也无助于发现(非)易受攻击的版本。 1.0.1(af)和1.0.1g之间的差异是至关重要的。 问题: 什么是可靠的方式来检查版本,最好是跨发行版? 为什么不把版本信件放在首位? 除了Ubuntu 12.04 LTS,我无法testing这个。 其他人也报告这种行为。 几个例子: https://twitter.com/orblivion/status/453323034955223040 https://twitter.com/axiomsofchoice/status/453309436816535554 一些(特定于发行版)的build议正在滚动: Ubuntu和Debian: apt-cache policy openssl和apt-cache policy libssl1.0.0 。 比较版本号与这里的包: http : //www.ubuntu.com/usn/usn-2165-1/ Fedora 20: yum info openssl (感谢@ znmeb在twitter上)和yum info openssl-libs 检查旧版本的OpenSSL是否仍驻留: 这不是完全可靠的,但你可以试试lsof -n | grep […]
这是一个关于保护LAMP堆栈的典型问题 保护LAMP服务器的绝对指导是什么?
假设我设置了一个符号链接: ln -s /root/Public/mytextfile.txt /root/Public/myothertextfile.txt 有没有办法看到myothertextfile.txt的目标是使用命令行?
我们将在新服务器上运行CentOS 7。 在服务器内部的raid6中有6个300GB的驱动器。 (存储主要是以40TB RAID盒子的forms存在)。如果格式化为单个卷,则内部容量约为1.3TB。 我们的系统pipe理员认为在一个大的1.3TB分区上安装操作系统是一个非常糟糕的主意。 我是一名生物学家。 我们不断安装新的软件来运行和testing,其中大部分都在/ usr / local。 然而,因为我们有大约12位非计算机精明的生物学家使用这个系统,所以我们也在/ home里收集了很多的东西。 我们的最后一台服务器有一个200GB的分区,在2.5年之后它已经满了90%。 我不希望这种情况再次发生,但我也不想违背专家的意见! 我们如何才能最好地使用1.3TB可用来确保空间是可用的时间和地点,而不是造成系统pipe理员的维修噩梦?
我试图添加mount –bind /proc/ /chroot/mysql/proc到/etc/fstab 。 我该怎么做?
Linux上有没有文件名或path长度的限制?
有没有可用于检查域的TXTlogging的Linux shell命令?
我正在运行的Ubuntu,并希望找出一个特定的文件系统(不是分区)的UUID 。 我知道我可以使用e2label /dev/sda1来查找文件系统标签,但似乎没有类似的方式来查找UUID 。