サーバー管理者

システムおよびネットワーク管理者向けのQ&A

4
XenでTCP accept()のパフォーマンスがそれほど悪いのはなぜですか?
私のサーバーが新しい着信TCP接続を受け入れる速度は、Xenでは本当に悪いです。ベアメタルハードウェアでの同じテストでは、3〜5倍の速度向上が示されています。 なぜXenの下でこれがそんなに悪いのですか? Xenを調整して、新しいTCP接続のパフォーマンスを改善できますか? この種のユースケースにより適した他の仮想化プラットフォームはありますか? バックグラウンド 最近、私は、Xenの下で実行されている社内開発のJavaサーバーのパフォーマンスのボトルネックを調査しています。サーバーはHTTPを話し、単純なTCP接続/要求/応答/切断呼び出しに応答します。 ただし、サーバーに大量のトラフィックを送信している場合でも、1秒あたり最大7000を超えるTCP接続を受け入れることはできません(8コアEC2インスタンス、Xenを実行するc1.xlargeで)。テスト中、サーバーは1つのコア(必ずしもCPU 0ではない)が80%を超えて非常に負荷がかかり、他のコアはほとんどアイドル状態になるという奇妙な動作も示します。これは、問題がカーネル/基礎となる仮想化に関連していると思うようになります。 ベアメタルの非仮想化プラットフォームで同じシナリオをテストすると、TCP accept()レートが35 000 /秒を超えるというテスト結果が得られます。これは、すべてのコアがほぼ完全に飽和しているUbuntuを実行しているCore i5 4コアマシン上で実行されます。私には、そのような数字は正しいと思われます。 再びXenインスタンスで、sysctl.confにあるほとんどすべての設定を有効化/調整してみました。受信パケットステアリングと受信フローステアリングを有効にし、スレッド/プロセスをCPUに固定しますが、明らかなゲインはありません。 仮想化を実行すると、パフォーマンスの低下が予想されます。しかし、この程度に?低速のベアメタルサーバーは、virtよりも優れています。5倍の8コア? これは本当にXenの予想される動作ですか? Xenを調整して、新しいTCP接続のパフォーマンスを改善できますか? この種のユースケースにより適した他の仮想化プラットフォームはありますか? この動作を再現する これをさらに調査して問題を特定すると、netperfパフォーマンステストツールが、私が経験している同様のシナリオをシミュレートできることがわかりました。netperfのTCP_CRRテストを使用して、さまざまなサーバー(仮想化および非仮想化の両方)からさまざまなレポートを収集しました。調査結果に貢献したい、または現在のレポートを調べたい場合は、https://gist.github.com/985475をご覧ください。 この問題が不十分に書かれたソフトウェアによるものではないことをどのように確認できますか? サーバーはベアメタルハードウェアでテストされており、使用可能なすべてのコアをほぼ飽和させます。 キープアライブTCP接続を使用すると、問題はなくなります。 何でこれが大切ですか? で、ESN(私の雇用者)私はのプロジェクトリードしていますBeaconpush、Javaで書かれた彗星/ウェブソケットサーバー。非常にパフォーマンスが高く、最適な条件下で与えられたほぼすべての帯域幅を飽和させることができますが、それでも新しいTCP接続をどれだけ高速にできるかに制限されています。つまり、ユーザーが頻繁に出入りする大きなユーザーチャーンがある場合、多くのTCP接続をセットアップ/ティアダウンする必要があります。接続を可能な限り長く維持するために、この問題を軽減しようとします。しかし、最終的に、accept()のパフォーマンスがコアの回転を妨げているため、それが気に入らないのです。 アップデート1 誰かがこの質問をHacker Newsに投稿しました。そこにはいくつかの質問/回答もあります。しかし、私はこの質問を、私が見つけたときに見つけた情報で最新の状態に保とうとします。 これをテストしたハードウェア/プラットフォーム: インスタンスタイプがc1.xlarge(8コア、7 GB RAM)およびcc1.4xlarge(2x Intel Xeon X5570、23 GB RAM)のEC2。使用されたAMIは、それぞれami-08f40561とami-1cad5275でした。また、誰かが「セキュリティグループ」(すなわち、EC2ファイアウォール)も影響を与える可能性があると指摘しました。しかし、このテストシナリオでは、このような外部要因を排除するためにlocalhostでのみ試しました。私が聞いたもう一つのうわさは、EC2インスタンスが100k PPS以上をプッシュできないことです。 Xenを実行する2つのプライベート仮想化サーバー。1つはテスト前に負荷がゼロでしたが、違いはありませんでした。 Rackspaceのプライベート専用Xenサーバー。ほぼ同じ結果があります。 これらのテストを再実行し、https://gist.github.com/985475でレポートに記入するプロセスを進めています。支援が必要な場合は、数字をお寄せください。それは簡単です! (アクションプランは別の統合された回答に移動されました)

7
リバースプロキシするときにnginxがアップストリームのホスト名を渡すようにする
ホスト名を使用していくつかのdockerコンテナーを実行します。 web1.local web2.local web3.local これらへのルーティングは、nginxによるホスト名に基づいて行われます。このセットアップの前に(インターネットに接続されている別のマシン上に)プロキシがあり、アップストリームを次のように定義しています。 upstream main { server web1.local:80; server web2.local:80; server web3.local:80; } 実際の仮想ホストの説明: server { listen 80; server_name example.com; location / { proxy_pass http://main; } } 現在、コンテナは「web1.local」ではなく「main」というホスト名を受け取るため、リクエストに適切に応答しません。 質問:要求をプロキシするときに、Host:ヘッダーでサーバーの上流グループの名前の代わりに上流サーバーの名前を渡すようにnginxに指示するにはどうすればよいですか?

5
Nginxで静的ファイルを提供するときのキャッシュを無効にする(開発用)
Nginxを使用して、開発プラットフォームで静的ファイルを提供しています。開発プラットフォームであるため、キャッシュを無効にして、各変更がサーバーに伝播されるようにします。VHostの構成は非常に簡単です。 server { server_name static.server.local; root /var/www/static; ## Default location location / { access_log off; expires 0; add_header Cache-Control private; } } HTMLファイル(http://static.server.local/test.html)にアクセスする場合、問題はありません。ファイルが変更されていない限り、サーバーは304 Not Modifiedを返し、200 OK応答を返します。ファイルが変更されたときに変更されたファイル。 ただし、JavascriptまたはCSSファイルでは動作が異なるようです。ファイルが変更されると、予想どおり200 OK応答が返されますが、古いテキストが含まれています。 この動作を説明できるNginxの内部キャッシュメカニズムはありますか?または追加する必要のある構成はありますか? 補足として、ファイルが変更されたときにNginxによって返されるヘッダーを次に示します(正しいようです)。 Accept-Ranges:bytes Cache-Control:max-age=0 private Connection:keep-alive Content-Length:309 Content-Type:text/css Date:Fri, 13 May 2011 14:13:13 GMT Expires:Fri, 13 May 2011 14:13:13 GMT Last-Modified:Fri, 13 …


5
Windows Active Directoryの命名のベストプラクティスですか?
これは、Active Directoryドメインの命名に関する標準的な質問です。 仮想環境でWindowsドメインとドメインコントローラーを試した後、DNSドメインと同じexample.com名前のActive Directory ドメインを持つことは悪い考えであることに気付きました(つまり、example.comドメイン名がある場合、Active Directory名として持っていることは意味がありません当社のウェブサイトとして使用するために登録されています)。 この関連する質問はその結論を裏付けているように見えますが、Active Directoryドメインの命名に関して他にどのようなルールがあるのか​​はまだわかりません。 Active Directoryの名前がどうあるべきか、そうでないべきかについてのベストプラクティスはありますか?



9
Linuxでファイルを保存するディレクトリパスをコピーする方法は?
Eclipseプロジェクトとその中に ".project"ファイルがあり、ディレクトリ構造は ' myProject/.project'のように見えます。これらの「.project」ファイルを別のディレクトリにコピーしたいのですが、囲んでいるディレクトリ名を保持したいです。 「a/myProject/.project」があり、「myProject/.project」を「b」にコピーしたいので、「」になりますb/myProject/.projectが、「b/myProject」は存在しません。私が試してみると: cp -r ./myProject/.project ../b 「myproject」ディレクトリなしで、「。project」ファイル自体のみをコピーします。お知らせ下さい。
88 linux  directory  copy 



8
Heartbleed:OpenSSLのバージョンを確実かつ移植可能にチェックする方法は?
私はGNU / Linuxおよび他のシステムでOpenSSLのバージョンをチェックする信頼性の高いポータブルな方法を探していたので、ユーザーはHeartbleedバグのためにSSLをアップグレードする必要があるかどうかを簡単に見つけることができます。 簡単だと思いましたが、すぐに最新のOpenSSL 1.0.1gを使用してUbuntu 12.04 LTSで問題に遭遇しました。 opensslバージョン-a 私はフルバージョンを見ることを期待していましたが、代わりにこれを手に入れました: OpenSSL 1.0.1 2012年3月14日 構築日:火6月4日07:26:06 UTC 2013 プラットフォーム:[...] 不愉快なことに、バージョンレターが表示されません。そこに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(Twitterの@znmebに感謝)およびyum info openssl-libs 古いバージョンのOpenSSLがまだ存在するかどうかの確認: 完全に信頼できるわけではありませんが、試してみてくださいlsof -n | grep ssl | grep DEL。Heartbleed:OpenSSLのバージョンを確実かつ移植可能にチェックする方法をご覧ください。なぜこれがうまくいかないかについて。 UbuntuおよびDebianでOpenSSLパッケージを更新するだけでは十分ではないことがわかりました。また、libssl1.0.0パッケージを更新し、-then-がopenssl …

4
WiresharkでHTTPトラフィックをフィルタリングする方法は?
私のサーバーには、クライアントからの大量のhttpリクエストがあります。HTTPトラフィックの量を測定したい。Wiresharkでどうすればよいですか?または、おそらく別のツールを使用した代替ソリューションがありますか? これが、Wiresharkでの単一のHTTP要求/応答トラフィックの外観です。pingはWinAPI funciton :: InternetCheckConnection()alt text http://yowindow.com/shared/ping.pngによって生成され ます ありがとう!

9
mysqldumpをtar.gzに
通常、mysqldumpコマンドでMySQLデータベースをダンプした後、すぐに結果のファイルをtar / gzipします。私はこれを1つのコマンドで行う方法を探しています: だからこれから: 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 またはさらに良い(私は通常ダンプファイルを別のサーバーにscpしているため): 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-community 新しいサーバー:5.0.51a-24 + lenny1 編集:古いサーバーからデータベース「mysql」のダンプを取得しましたが、新しいサーバーの「mysql」dbとマージする適切な方法を知りたいと思います。 phpMyAdminを使用してまっすぐな「インポート」を試みましたが、重複(既に手動で移行したもの)に関するエラーが発生しました。 誰かが2つの「mysql」データベースをマージするエレガントな方法を手に入れましたか?

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.