先日Windows7 x64にセットアップしたpgAdmin4の、デスクトップアプリでなくウェブアプリだけの現象ですが、セッション情報を1秒ごとにローカルファイルに書き込むと判明。リソースモニタで見ると ↓ ずっとディスクアクセスが続いてます…。
クライアントのブラウザでDBに接続してなくとも同様。ノートパソコンで試して気づきました(ディスクのランプが点滅しっ放しなので)。これは何とかしたい。だけどセッション情報フォルダを変えるオプションはまだ無い。
手探りで調べたら、デスクトップ版・ウェプアプリ版とも環境変数HOMEの下に、設定やセッション情報を格納するフォルダ(.pgadmin/)が作られる様子。詳しく書くと ↓
%HOME%
┗ .pgadmin
┣ sessions
┃ ┗ (files)
┣ pgadmin4.db
┗ pgadmin4.log
とりあえすウェブアプリの起動時にHOMEをRAMDISK下に設定し、フォルダ.pgadmin全体をディスクから分離しました。バッチファイルでは ↓ こんな感じ。pgadmin4.dbにはサーバ情報が登録されるので、本当はsessionsフォルダだけシンボリックリンクでRAMDISKに移したかったけど。
@echo off
set home=r:\temp
cd %~dp0\venv
start "pgAdmin4 python server" /min python ..\web\pgAdmin4.py
バッチファイルの置き場所は ↓ この前提。どこに置いても、カレントをvenvに移動してPythonスクリプトを起動すれば、多分動きます。
pgAdmin 4
┗ v1
┣ docs
┣ installer
┣ runtime
┣ venv
┃ ┣ python27.dll
┃ ┗ python.exe
┗ web
┃ ┗ pgAdmin4.py
┗ batfile
Windows7のリソースメータには、RAMDISKのIOが出ません(ディスクフォーマットにもよると思うけど)。pgAdmin4ウェブアプリを再起動し、しばらく放置してリソースメータを見ると ↓ この状態。pgAdmin4のサーバはずっとRAMDISKにセッション情報を保存し続けてるけど、とりあえずディスクアクセスは回避しました。
デスクトップアプリ版でも、サーバ情報をポータブルに(システムドライブと切り離して)持ちたければ、同様に環境変数HOMEを設定して起動すればOK。これでレジストリ以外は純ポータブルなアプリになります。