服务器管理员

系统和网络管理员的问答

8
什么限制了Linux服务器上的最大连接数?
哪些内核参数或其他设置控制可在Linux服务器上打开的TCP套接字的最大数量?允许更多连接的权衡是什么? 我注意到在使用ab对Apache服务器进行负载测试时,最大化服务器上​​的打开连接非常容易。如果您取消了ab的-k选项,该选项允许连接重用,并使其发送大约10,000个以上的请求,则Apache会处理大约11,000个左右的请求,然后暂停60秒钟。查看netstat输出显示TIME_WAIT状态下有11,000个连接。显然,这很正常。出于TCP可靠性的原因,即使在客户端完成连接后,连接也会保持默认打开状态60秒。 看来这是对服务器进行DoS的一种简便方法,我想知道通常的调整和预防措施是什么。 这是我的测试输出: # ab -c 5 -n 50000 http://localhost/ This is ApacheBench, Version 2.0.40-dev <$Revision: 1.146 $> apache-2.0 Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ Copyright 2006 The Apache Software Foundation, http://www.apache.org/ Benchmarking localhost (be patient) Completed 5000 requests Completed 10000 requests apr_poll: The timeout specified has …

3
是否可以在不重新启动硬件的情况下重新启动Linux OS?
有没有一种方法可以在不重新启动硬件的情况下重新启动Linux系统(尤其是Debian)? 我有一个RAID控制器,它需要一些时间才能在操作系统启动之前自动运行,如果有一种方法可以快速重新启动Linux操作系统,而不必完成重新启动RAID控制器的整个重新启动过程,等等
89 linux  debian  raid 


4
为什么在SSH连接中断时控制台有时会永远挂起?
我已经在许多控制台(在Linux,Mac上,...)以及许多不同网络中的许多不同机器上看到了这一点。我永远无法查明发生这种情况的确切原因:您要做的就是通过SSH登录到计算机。如果连接由于某种原因而中断(为简单起见,假设网络电缆被拔出),则有时控制台会永远挂起-在其他时候,它对父shell的出口也很好。 发生这种情况时非常烦人(例如,您丢失了命令历史记录。)也许存在秘密的键盘快捷键可以强制退出(Ctrl-C或Ctrl-D无效)?而且,在所有实现中产生此随机“错误”的原因是什么?

4
在Xen下,为什么TCP accept()性能如此糟糕?
在Xen下,我的服务器可以接受()新的传入TCP连接的速率确实很差。在裸机硬件上进行的相同测试显示速度提高了3-5倍。 在Xen下怎么这么糟糕? 您可以调整Xen来提高新TCP连接的性能吗? 是否有其他虚拟化平台更适合此类用例? 背景 最近,我一直在研究在Xen下运行的内部开发Java服务器的一些性能瓶颈。服务器使用HTTP并回答简单的TCP连接/请求/响应/断开连接呼叫。 但是,即使在向服务器发送大量流量时,它每秒也不能接受超过7000个TCP连接(在8核EC2实例上,运行Xen的c1.xlarge)。在测试过程中,服务器还表现出一种奇怪的行为,其中一个内核(不一定是cpu 0)的负载超过80%,而其他内核几乎保持空闲状态。这使我认为问题与内核/底层虚拟化有关。 在裸机,非虚拟平台上测试相同的方案时,我得到的测试结果显示,TCP accept()的速率超过35000 /秒。这是在运行Ubuntu的Core i5 4核心计算机上,所有核心几乎完全饱和。在我看来,这种数字是正确的。 再次在Xen实例上,我尝试启用/调整sysctl.conf中几乎所有的设置。包括启用“ 接收数据包控制”和“ 接收流控制”以及将线程/进程固定到CPU,但没有明显的收获。 我知道运行虚拟化时性能会下降。但是到这个程度呢?较慢的裸机服务器胜过虚拟机。8核心减少了5倍? Xen确实是这种预期的行为吗? 您可以调整Xen来提高新TCP连接的性能吗? 是否有其他虚拟化平台更适合此类用例? 重现此行为 在进一步调查并查明问题时,我发现netperf性能测试工具可以模拟我遇到的类似情况。使用netperf的TCP_CRR测试,我从不同的服务器(虚拟服务器和非虚拟服务器)收集了各种报告。如果您想对某些发现做出贡献或查找我当前的报告,请参阅https://gist.github.com/985475 我怎么知道这个问题不是由于软件写得不好? 该服务器已经在裸机硬件上进行了测试,并且几乎饱和了所有可用内核。 使用保持活动的TCP连接时,问题消失了。 为什么这很重要? 在ESN(我的雇主),我是Beaconpush的项目负责人,Beaconpush是用Java编写的Comet / Web Socket服务器。尽管它的性能非常好,并且在最佳条件下几乎可以饱和分配给它的所有带宽,但是它仍然受到新TCP连接建立速度的限制。也就是说,如果用户频繁流失,那么用户来回频繁,则必须建立/删除许多TCP连接。我们尝试减轻这种影响,以使连接尽可能长寿。但是最后,accept()性能才是使我们的内核无法旋转的原因,我们对此并不满意。 更新1 有人将此问题发布到Hacker News,那里也有一些问题/答案。但是,我将不断努力,以我发现的信息来使这个问题保持最新。 硬件/平台我已经在以下方面进行了测试: 实例类型为c1.xlarge(8核,7 GB RAM)和cc1.4xlarge(2x Intel Xeon X5570,23GB RAM)的EC2。使用的AMI分别为ami-08f40561和ami-1cad5275。有人还指出,“安全组”(即EC2防火墙)也可能会受到影响。但是对于此测试方案,我仅在localhost上尝试过消除此类外部因素。我听到的另一个谣言是,EC2实例的推送速度不能超过100k PPS。 两个运行Xen的私有虚拟服务器。在测试之前,一个负载为零,但没有影响。 Rackspace的专用Xen服务器专用。大约有相同的结果。 我正在重新运行这些测试,并在https://gist.github.com/985475上填写报告。如果您想提供帮助,请贡献您的数量。这很容易! (行动计划已移至单独的综合答案中)



1
为什么MySQL命令行工具会忽略--port参数?
这就是我在做什么: mysql --host=localhost --port=9999 mysql -u root -p --execute="show tables;" 不管我在--port参数中提供什么命令都有效(连接到端口3306)。我有一台机器上运行着两个mysql服务器,并想通过显式提供其端口号连接到第二台mysql服务器。这是怎么回事?为什么mysql忽略此参数?
88 mysql  port 

8
Heartbleed:如何可靠且可移植地检查OpenSSL版本?
我一直在寻找一种可靠且可移植的方法来检查GNU / Linux和其他系统上的OpenSSL版本,因此用户可以轻松地发现由于Heartbleed错误而应该升级自己的SSL。 我以为这很容易,但是我很快在Ubuntu 12.04 LTS上遇到了最新的OpenSSL 1.0.1g问题: openssl版本-a 我原本希望看到完整版本,但我得到了: OpenSSL 1.0.1 2012年3月14日 建立于:2013年6月4日星期二07:26:06 平台:[...] 令我不愉快的是,没有显示版本字母。没有f,没有g,只有“ 1.0.1”就这样。列出的日期也无助于发现(非)漏洞版本。 1.0.1(af)和1.0.1g之间的差异至关重要。 问题: 检查版本(最好是跨发行版)的可靠方法是什么? 为什么没有显示版本号?除了Ubuntu 12.04 LTS之外,我无法在其他任何产品上进行测试。 其他人也报告了此行为。一些例子: https://twitter.com/orblivion/status/453323034955223040 https://twitter.com/axiomsofchoice/status/453309436816535554 一些(特定于发行版的)建议在其中推出: 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 ssl | grep DEL。请参阅Heartbleed:如何可靠且可移植地检查OpenSSL版本?为什么这可能对您不起作用。 事实证明,在Ubuntu和Debian上更新OpenSSL软件包并不总是足够的。您还应该更新libssl1.0.0软件包,然后-then-检查是否openssl …

9
如何在Linux中复制文件保留目录路径?
我有Eclipse项目和“ .project”文件,目录结构看起来像“ myProject/.project”。我想将这些“ .project”文件复制到另一个目录,但是我希望保留封闭的目录名。 假设我有“ a/myProject/.project”,我想将“ myProject/.project” 复制到“ b”,因此它是“ b/myProject/.project”,但“ b/myProject”不存在。当我尝试: cp -r ./myProject/.project ../b 它只复制“ .project”文件本身,而不复制“ myProject”目录。请指教。
88 linux  directory  copy 

4
如何在Wireshark中过滤HTTP流量?
我怀疑我的服务器有大量来自其客户端的http请求。我想测量HTTP流量。如何使用Wireshark做到这一点?还是可能存在使用其他工具的替代解决方案? 这是Wireshark中单个http请求/响应流量的外观。ping是由WinAPI函数:: InternetCheckConnection() 替代文本http://yowindow.com/shared/ping.png生成的 谢谢!

9
mysqldump到tar.gz
通常在用mysqldump命令转储MySQL数据库后,我立即tar / gzip生成的文件。我正在寻找一种在一个命令中执行此操作的方法: 所以从这个: mysqldump dbname -u root -p > dbname.sql tar czvf dbname.sql.tgz dbname.sql rm dbname.sql 对于这样的事情: mysqldump dbname -u root -p > some wizardry > dbname.sql.tgz 甚至更好(因为我通常将转储文件保存到另一台服务器): mysqldump dbname -u root -p > send dbname.sql.tgz to user@host 我在debian上运行bash。
88 mysql  debian  bash  gzip  tar 

10
如何从MySQL导出特权,然后导入到新服务器?
我知道如何使用mysqldump导出/导入数据库,这很好,但是如何将特权获取到新服务器中。 值得一提的是,新数据库上已经有几个现有数据库,我该如何导入旧服务器特权而又不破坏已有的几个数据库。 旧服务器:5.0.67-社区 新服务器:5.0.51a-24 + lenny1 编辑:我已经从旧服务器上获取了数据库“ mysql”的转储,现在想知道与新服务器上的“ mysql”数据库合并的正确方法。 我使用phpMyAdmin尝试了直接的“导入”,最后出现了关于重复项的错误(我已经手动迁移了一个)。 有没有人很好地合并两个“ mysql”数据库?



By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.