これは比較的単純な質問であり、うまくいけば簡単な答えがあります。全能のグーグルはこれまでのところこれについてはあまり役に立たない。
私はかなり活発なウェブホスティングビジネスを運営しています。 PHPスクリプトを使用してvbulletinデータベースからすべてを取得し、それをipbソフトウェアにスラップする、やや大きなデータベース(vbulletinからipbへの変換〜4gb)をインポートしているクライアントがいます。
それは本質的にそれが実行されている間私のサーバーを不自由にします。
今、私は良いホストになり、彼にこれをさせたいのですが、私のボックスの他のユーザーの結果ではありません。
何か案は?
[re] Niceを使用して、プロセスの優先度を調整できます。これにより、それ自体が「制限」されることはありませんが、サーバー上の他の操作は引き続き実行されます。コマンドreniceは、実行中のプロセスの優先度を変更します。fromman renice "有用な優先度は次のとおりです。20(影響を受けるプロセスは、システム内の他の何も実行したくない場合にのみ実行されます)、0(「基本」スケジューリング優先度)、その他ネガティブ(物事を非常に速く進めるため)。」
renice N PID
例:renice +5 987これにより、プロセス987はスケジューリングに不利になります。
編集:確かに他のユーザーに影響を与えるので、私はあなたのmysqlサーバープロセスを放棄しません-代わりにmysqlクライアントプロセスを探してそれを放棄します。
問題のリソースがプロセッサの場合は、cpulimitを試してください。 cpulimitは、プロセスのCPU使用率を制限しようとする単純なプログラムです。
参照する
http://webupd8.blogspot.com/2009/05/limit-cpu-usage-by-process-linux.html
または
http://www.cyberciti.biz/faq/cpu-usage-limiter-for-linux/
お役に立てば幸いです
アカウントごとのリソース制限 を使用して、クライアントが確立できる接続の数を制限することはできません。したがって、使用されるシステムリソースを制限します。 MySQL 5.0では、個々のアカウントに対して次のサーバーリソースを制限できます。
他の人が示唆しているように、「ニース」は知っておくとよいでしょう。
しかし、ここに問題があります。mysqlサーバー自体以外のものを「いい」とすると、すべての挿入はMysqlの優先度で実行されます。これはかなり高いです。
たとえば、「Nice」phpスクリプトが低優先度で大量のINSERTステートメントを生成し、それをmysqlサーバーに送信すると、mysqlサーバーは、=の「niceness」に関係なく、通常の高優先度モードでその挿入を実行します。 PHPスクリプト。これは、Mysqlサーバーが独自の優れた機能とPRIを備えた別個のプロセスであるためです。
一方、mysqlサーバー自体を「ニース」にすると、すべてのDB操作が遅くなります。他の回答で述べられているように、良くありません。
最善の解決策は、この顧客にPHPスクリプトを設定して(ループ上で)小さなビットで挿入を行い、sleep()ステートメントをループ内に配置するように指示することです。 。挿入は完全に優先されますが、サイズは管理可能であり、sleepステートメントは他のプロセスを実行させ、データベースに追いつく機会を与える必要があります。
RAMの使用法にこだわりがある場合は、sleepステートメントの直前に不要な変数を「設定解除」するように顧客に依頼できます。
お客様がこのスクリプトをコマンドラインから実行する場合は、上記に加えて「ニッキング」することをお勧めします。
あなたが探しているコマンドはニースです。
Niceは、プロセスに未使用のリソースのみを使用させるのに適しています。実際にそれ以上に制限したい場合は、web/dbサーバーのユーザーの「ulimit」が探している可能性があります。
編集:これは結局のところそれほど良い考えではないかもしれません。 ulimitを設定すると、プロセスが制限を超えた場合にkillになると思います。
これは、将来的に考慮すべきことかもしれません-仮想化。
OpenVZやVServerのようなものを使用する場合、基本的に、各仮想サーバーによって消費されるCPU時間の量に上限を設けることができます。 MySQLを実行するだけの仮想サーバーを作成し、それを制限することができます。それ以外はあまり変わりません。