2011-08-05 10 views
0

私はこのマシンでよ:3GHzの 4GBのRAMのDDR2 @UBUNTU 11.04 + PHP + POSTGRESQLパフォーマンスを向上させる

インテルCore 2デュオE8400

PHP 5.3.6 pgsqlの9.1

私は」同じような仕様のMacで5分かかるPHPスクリプトを実行しています。 このphpスクリプトは、本質的に、dbをいくつかインポートして再作成します。

このコンピュータでは、20分以上実行されます。

奇妙なことは、彼らが(メモリ制限を-1)必要なだけのRAMを使用するには、PHP & POSTGRESQL

PID USER  PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 
8408 postgres 20 0 2188m 44m 40m D 4 1.1 0:20.71 postgres                                   
8407 gianps 20 0 380m 225m 6620 S 2 5.7 0:11.78 php 


top - 16:08:32 up 3:35, 3 users, load average: 1.26, 1.15, 0.80 
Tasks: 187 total, 1 running, 185 sleeping, 0 stopped, 1 zombie 
Cpu(s): 4.8%us, 2.7%sy, 0.2%ni, 87.0%id, 5.1%wa, 0.0%hi, 0.2%si, 0.0%st 
Mem: 4056572k total, 2541972k used, 1514600k free, 117772k buffers 
Swap: 3905532k total,  0k used, 3905532k free, 902048k cached 

IセットアップPHP(CLIおよびApacheの両方)の両方からCPUの使用であると使用するために調整されたのpostgres:

のshared_buffers = 2ギガバイト
effective_cache_size = 3072メガバイトこのスクリプトの使用をできるように

任意の提案は、より多くのCPU &をRAMとより速く走る?

おかげ

更新: をいくつかの調査の後、私はそれは、同期設定が(このような状況で)コミットことがわかった私のスクリプト10倍は速くなります。コミット同期かを理解するには、このオプションをデフォルトにしても安全ではないので、必要なときに、私はちょうどオフに切り替え

set synchronous_commit to off; 

.. は、データをインポートするdocumentation

答えて

1

を行い、ディスクに書き込む必要があり、そうプロセスの持続時間は、ローカルストレージシステムのパフォーマンスによって与えられる可能性があります。あなたのMacに派手なSSDがあり、他の箱にIDEディスクがあるなら、後者は簡単にはるかに遅くなるかもしれません。両方のシステムでディスクのスループットを視覚化するには、iostatを使用します。

データを挿入/書き込むためのもう1つの大きな要因は、コミットサイズです。一度に多数の行を挿入し、数千行ごとにコミットを発行してみてください。または、より高速な「COPY FROM STDIN」メソッドを使用してください(これはPostgreSQL独自のものです)。

+0

両方のコンピュータに同じハードディスクが割り当てられています(2 7200 rpm)。私はいくつかの隠し値は、より多くのラムCPUを使用してPHP/Postgreをロックしていると思います。 –

+0

オフに同期コミットに変更私の問題を解決しました。コミットについてのあなたの情報のおかげでそれを見つけました。 –

関連する問題