
こんにちは、ユーザー名%
休日にすべての管理者を祝福したいと思います。これに敬意を表して、投稿を書くようになりました。 彼らの活動の性質(* nix admin)から、私は友人からサーバーに関するさまざまな助けを求められています。 通常、精神の要求-私たちはサイトを遅くしたり、何かが私たちからぶら下がったりし始めました。 多くの場合、問題は、自分が何をしているのかを常に理解していないプログラマーの行動、または自分の行動の結果を理解していないプログラマーの行動により発生します。 これをすべて見て、私はあなたといくつかのケースと指示を共有することにしました。
最初は、この投稿を「管理をやめる」と呼び、管理者のプログラマーの典型的な間違いを集めることを考えましたが、アイデアは少し違っていたので、タイトルはこのようになりました。 投稿の混乱について事前に謝罪したいのですが、書くために何かを転がしただけで、考えが進むにつれてそれを書きました。
事例1
-「アントン、サイトの速度を落とし始めました。 ご覧ください?」
そのため、私はサーバーへのsshで何が起きているかを理解するために、言葉遣いはかなり標準的です。
トップを見ると、PHPプロセスが大量のリソースを消費していることがわかります。 これは何? 犯罪は一切ありません-remove_old_thumbs.php。 ご想像のとおり、画像の古いサムネイルが削除されます。 そして、すべてがうまくいくでしょうが、彼はそれを非常に積極的に行います。
iotopは、スクリプトがハードドライブを非常に積極的に苦しめていると言います。 特に仮想マシンでは、理解しやすいウールのフォルダーと数千のファイルの削除はリソースを大量に消費します。 解決策?
ionice -c3 php remove_old_thumbs.php
古いサムネイルを削除する手順は重要ではなく、高い優先度を必要としないため、低いI / O優先度で実行できます。 開始-プロセスがより静かになり、サイトのブレーキが停止し、ミニチュアが徐々に削除されました-誰もが幸せです。
事例2
-「アントン、私たちはここでミニチュアを作り始めましたが、何かがすべてを遅くしています」
さて、見てみましょう。 ここにそれらがあります。 サムネイルリンクは次のようになります。 thumb.php?image = images / 12311.jpg。 さて、ここであなたはコードをより深く掘り下げなければなりません。
-サムネイルの画像は1つのフォルダーにあり、100万個あります。 fsを強制する必要はありません。
-スクリプトは、生成されたサムネイルを保存しません。 アピールごとに、彼は新しいミニチュアを作成します-紳士ではありません!
-すべての写真のサムネイルの生成には時間がかかります。
ケースを分析します。 手始めに、すべての写真をフォルダに入れるといいでしょう。 日付で整理し、出版物から日付を取得することが提案されています。 これには特別な問題はありません。すべてが透明で明確です。 そして、どういうわけか次のようになりました:images / 2013/08 / 12311.jpg。
最後の2ポイントを削除するために、thumbs / 2013/08 / 12311.jpgなどのサムネイルアドレスを作成し、nginxで指定されたURLにファイルの存在をチェックし、そうでない場合はリクエストをthump.phpにリダイレクトするルールを設定することを提案しました。 次に、thumb.phpはサムネイルを生成し、クライアントに表示して、ディスク上の目的のアドレスに配置します。 したがって、cpuとfsをアンロードし、サイトがクラッシュしました。
事例3
-「アントン、サイトの速度を落とし始めました。 ご覧ください?」
プロセスでは、10個のremove_old_thumbs.phpプロセスがハングします。 みんな、まあ、クラウンについて実行しているスクリプトで無視するためのスクリプトをしましょうか? 少なくとも/ tmpにロックファイルを作成し、register_shutdown_functionを使用してスクリプトが完了したら、このファイルを削除する関数を呼び出します。 早くて簡単。
事例4
トピックは非常に関連性がありますが、これについては詳しく説明しませんが、各ケースは厳密に個別です。 私はメモリの例を再現しませんが、要するに:
「SELECT * FROM posts」-すべての説明を含む投稿のデータベース全体を取り出し、ガベージを修正し、このデータ配列を積極的に使用していますが、配列全体からidとposter_urlのみが必要です。
「投稿の説明を選択WHERE post_time> '2013-01-01' AND post_moderated = '1' ORDER BY name DESC」-このクエリが多くのjoin'ovと非常に大規模であると想像してください。 そして、なぜ彼は突然遅くなりますか? 名前フィールドにはインデックスがありませんが、新しいプログラマーはEXPLAINについて聞いたことがないためです。
まあ。 これらのケースは、プログラマーの間違いによって引っ張られます。 非難される管理者は何ですか?
これから始めるには:
ssh :// ルート :om7ooS3righoob4Xe7ri @ホスト名
90%の場合、サーバーへのリモートアクセスはルートユーザーから実行され、ほとんどすぐにこれらのサーバーは総当たり攻撃を開始します。 これは正しくありません。
何ができますか? まず、ユーザーを作成し、次にsshに移動します。 次に、sshd_configでルートからの許可を禁止します(PermitRootLogin no-ルートからの許可を禁止します)。 ユーザーのルート権限を取得するには、「su-」と入力するか、sudoを構成します。 難しいことではありませんか?
さらに何ができますか? 未知のIPからのsshへのアクセスを制限できます。また、iptablesに多数のルールを記述する必要はなく、いくつかのファイルを微調整するだけです。
hosts.deny
sshd:すべて
hosts.allow
sshd:123.231.132.213
そしてそれだけです! 123.231.132.213を除き、ssh経由でサーバーにアクセスすることは禁止されています。
OK
[root @ localhost〜]#ps auwx | grep php
ルート795 0.0 0.5 321152 9948? SS 7月22日0:10 php-fpm:マスタープロセス(/etc/php-fpm.conf)
ルート 884 0.0 0.3 321696 6724? S 7月22日0:00 php-fpm:プールwww
ルート 885 0.0 0.3 321696 6644? S 7月22日0:00 php-fpm:プールwww
ルート 886 0.0 0.3 321696 6720? S 7月22日0:00 php-fpm:プールwww
ルート 887 0.0 0.3 321728 6720? S 7月22日0:00 php-fpm:プールwww
ルート 888 0.0 0.3 321728 6728? S 7月22日0:00 php-fpm:プールwww
PHPスクリプトがルートから実行されるのはなぜですか? なぜ?! 車のキーを車自体に置いたようなものです。 それぞれの場合の解決策は異なります。この場合、php-fpm.conf configで、ユーザーは目的の設定に変更します。
他人のルート罪からスクリプトの実行を開始しなかった人-chmod 777 結果と治療方法については説明しませんが、1つだけ言います。 アクションを考慮してファイルのアクセス許可を設定します。 そして、そのようなそれらを決して公開しないでください
「Chmod 777 -R。 「。 運命によって、間違ったフォルダーでコマンドを実行することでOSを破壊することができます。
多くの管理者は、ソフトウェアをコンパイルしてシステムに入れることで罪を犯します。 私はこれが大きな悪であると言うつもりはありませんが、それでも悪です。 おなじみの./configure && make && make install ? みんな、パッケージを見つけるのが面倒ではありません。 パッケージがない場合は、同じcheckinstallを使用してみてください。
実際、多くの異なるケースがあります。 あなたはそれらを長い間そして一生懸命分解することができますが、プログラマーに連絡したいと思います。 深刻なトラフィックのあるサイトをサポートし、最適化を行い、ある種の過酷な機能を作成する場合は、経験豊富な同僚(特に管理者)にアドバイスを求めてください。 彼らはアドバイスであなたを助け、怖くてあまり間違いからあなたを救います。