投稿者「webcreator」のアーカイブ

MySQLの接続が遅い

とあるActive directyドメインネットワーク内のMySQLサーバーとドメインネットワーク外のWebサーバー(Apache+PHP)との接続があるタイミングから遅くなってしまった。
元々、ドメインネットワーク内に属していたWebサーバーでしたが、DMZに入れることになりドメインネットワークから切り離したタイミングでMySQLの接続が遅い現象が発生。
DMZとのネットワーク関係を疑っていたのだけど、解決方法がわからず。

そんな中、LinuxOSで構築したWebサーバーからも同様に接続が遅い。
接続ができないわけでなく、遅い。
接続に5秒から20秒かかる。

逆引きができていない場合は同様の現象が発生するらしく、MySQLサーバーをホスト名ではなくIPアドレスで指定すると解決するとか。
しかし、MySQLサーバーとの接続はIPアドレス指定。

結論として、名前解決がうまくいっていないため、ログイン認証に時間がかかっているだけでした。

MySQLサーバー側のhostsファイルに接続が遅いPCのIPアドレスとコンピュータ名を追記することで解決。

また、localhostとMySQLサーバーを指定していたホスト名を127.0.0.1で指定すると1秒程度かかることがあった接続が1秒以下になりました。

MySQLで容量の大きいバイナリデータを保存する場合

画像などのバイナリデータをMySQLに格納するために、BLOB型やMEDIUMBLOB型を利用することがありました。

BLOB型でサイズの大きいデータをMySQLに格納しようとするとMySQLのログにエラーログが出力されています。

100906 00:00:00 InnoDB: ERROR: the age of the last checkpoint is 9440228,
InnoDB: which exceeds the log group capacity 9433498.
InnoDB: If you are using big BLOB or TEXT rows, you must set the
InnoDB: combined size of log files at least 10 times bigger than the
InnoDB: largest such row.
調べたところ、MySQLのログファイルのサイズが小さいために発生している模様。

MySQLは、テーブルスペースの更新に時間がかかるため、直接テーブルスペースを更新するのではなく、最初にログファイルに全ての更新を書き込み、そのあと非同期でテーブルスペースを更新するという仕組みになっています。

このログファイル・サイズはデフォルトで5MBが設定されていますが、ログファイルの合計サイズは、 innodb_log_files_in_group という設定値(デフォルト2)と、innodb_log_file_size との積で、トータル10MBとなります。

そのため、10MB以上のファイルをDB(MEDIUMBLOB/BLOB型のカラム)に格納しようとするとログファイルサイズをオーバーしてしまい、エラーとなるため、ログファイルのサイズを拡張しなければなりません。

変更方法は以下のとおりです。
続きを読む

Plesk11環境でNginx 413 Request Entity Too Largeエラーが表示される

Plesk11環境下でPHPを動作させていると、Nginx 413 Request Entity Too Largeというエラー表示が出る場合。

解決策は以下のとおり。

1.nginxを無効にする

nginxを無効にする方法
Plesk11の管理画面、もしくは、Pleskの付属コマンドの操作(nginxmng)で行います

2.nginxのバーチャルドメインテンプレートファイルを編集する

※以下の作業を行うと、サーバ内の全ドメインに対して、設定が変更になります。
2-1) /usr/local/psa/admin/conf/templates/default/domain/nginxDomainVirtualHost.php
のファイルを編集

以下の行を変更します
変更前: client_max_body_size 128m;
変更後: client_max_body_size 256m;

※変更後の数値は例です

2-2) 変更したら実際の設定ファイルに反映するため httpmng –reconfigure-all を実行します

# /usr/local/psa/admin/bin/httpdmng –reconfigure-all

Macbook Air からMacbook Pro13に

普段持ち歩く用に購入したMacbook Air。
初めてのMacOSだったのですが、長年windowsに慣れしたんだ私でも難なく使うことができました。
購入したのが2011年。
当時は、カスタマイズでフルスペックで購入しました。
が、今となってはメモリが4GBでは心もとない。
バーチャルでwindwsを動かすなどツライです。

そこで、Macbook Proを購入することに。

続きを読む

mysqlデータを別サーバに移行

mysqlサーバで利用しているサーバの容量が減ってきたので別サーバに移行することに。
しかし、旧サーバの空き容量がないのでmysqldumpで出力することができない。
限界まで削除して1テーブルごとに出力するか。
すごく非効率。

そこで直接ダンプファイルを新サーバに出力できないか検討してみる。
続きを読む

Javascript のオブジェクトのプロパティ一覧を取得する方法

とあるjavascriptのライブラリを利用していたときのこと、欲しい値が取得できるかどうか調べていたのだけど、オブジェクトの中にその値があるかどうかが不明。
しかし、文献を調べてみてもプロパティ一覧がないので、プロパティ名が分からない。

そんなときには次の方法で取得できる。

for (key in Obj) {
    if (typeof Obj[key] ==  "function") {
        console.log(Obj[key]());
    }
    else {
        console.log(Obj[key]);
    }
}

これで無事値を取得できた。

MacOS Mavericksでplistを差し替えたい

MacOSにて、アプリケーションを更新した際にplistを差し替えたいので、
plistファイルを上書き保存。

が、アプリケーションが起動できない。
どうやらplistファイルが更新されていない?様子。

試行錯誤の末、どうやらキャッシュ?を参照している。

では、参照しているキャッシュはどこ?

いろいろと探してみるも見つからず。
困った。

続きを読む

PHP CSVファイルをダウンロードすると1行目に改行が入る

PHPにてCSVを生成して、ダウンロードするプログラムを書いていたのですが、
何故か1行目に改行がはいる状態。

調べてみると、スクリプトの最後 ?>のあとに改行があると出力されるとか。
しかし、スクリプトのあとに改行はない。

生成したCSVファイルを一度ファイルとして保存してみると、改行がない。
生成したCSVファイルをreadfileで読み込み出力すると改行がはいる。

続きを読む

PHPからバッチファイルを実行してpsql.exeを実行する方法

windowsシステムで稼働しているApache,PHPから、PostgreSQLへのテキストファイルのインポートを実施したいのですが、
PHPのexecでコマンドを実行するとなぜかブラウザがタイムアウトするまで読み込み中。
しかも、処理が完了していない。

execのコマンドの構文が間違っているのか?
調べたところ、psqlコマンドに-cと-qのオプションがないと対話式になってしまう。

-c ‘SQL’ クエリ(SQL)を直接実行
-q psqlが対話なしに実行される。

しかし、状況変わらず。

一度バッチファイルに処理を書き出して実行するもNG.
しかし、サーバー上でバッチファイルを実行すると正常動作。

さらに調べたところ、パスワードの入力待ちではないのか。
そもそもwindowsのApacheはサービスで稼働しており、daemonとして実行。
パスワードファイルを作成するとコマンドプロンプトではパスワード聞かれないみたい。
(参照:http://www.postgresql.jp/document/8.4/html/libpq-pgpass.html)

環境変数にセットすればいいのでは。
バッチファイルの先頭にパスワードセットのコマンドを出力するように変更。
SET PGPASSWORD=xxxxxxx

正常に動作しました。

出力やエラーが出ないのでハマりました。