external storage

2018-06-15

wp-cli wp_cli DB書き換え サーバ名変更

19:05

DBサイズが大きいときは wp-cli の search-replace を使ったほうがよい

Search and Replace for WordPress Databases Scriptはメモリ不足になる場合があった

WP-CLIをつかってWordPressのDBをコマンド1回で別のサーバーに引っ越す | Firegoby

2018-06-14

groonga pgroonga lock

23:07

FreeBSD

/usr/local/pgsql/data/pgroonga.log
2018-06-13 13:57:08.446030|w|92306: [DB Locked] time out(900000): io(base/86030/pgrn) collisions(900000/90)
2018-06-13 13:57:08.446253|e|92306: grn_io_lock failed
2018-06-13 13:57:08.453398|e|92306: 0xa12ffe74e <grn_io_lock+0x19e> at /usr/local/lib/libgroonga.so.0

セッションが終了してもpostgresのprocessが残る (psに出る、pg_stat_activity に出ない)

(gdb) bt
#0  0x000000080111948a in _nanosleep () from /lib/libc.so.7
#1  0x0000000a123cd4cc in pthread_suspend_all_np () from /lib/libthr.so.3
#2  0x0000000a12e9c9a9 in ?? () from /usr/local/lib/libgroonga.so.0
#3  0x0000000000000000 in ?? ()

復旧方法

cd /usr/local/pgsql/data/86030
$ groonga pgrn
 > clearlock
 0,1528866270.726295,16.03510427474976],true]
 > quit
 0,1528866294.04867,5.650520324707031e-05],true]

↑で復旧しない場合は↓の方法?

...

Here is the right way to recover the IO lock:

Stop PostgreSQL.

Remove pgrn* files in data directory.

Start PostgreSQL.

Run REINDEX INDEX index_name; for all PGroonga indexes.

In many cases, you can recover by only running REINDEX. But some cases (e.g.: lock stays behind pgrn (no following number) file), you need to 1., 2. and 3.

https://github.com/pgroonga/pgroonga/issues/48#issuecomment-314448290

groonga/mroonga

日々の覚書: Mroongaのロックが突き刺さるとどうなるか

http://y-ken.hatenablog.com/entry/how-to-unlock-mroonga-database

2018-06-13

Ansible 2.4 から、いままで include が持っていた機能は以下の4つのアクションに分けられました。

Action Operation Reusable content

import_tasks static task

include_tasks dynamic task

import_playbook static playbook

include_playbook dynamic playbook

include (DEPRECATED) both static and dynamic task or playbook

この変更は、静的(static)な読み込みと動的(dynamic)な読み込み、そして読み込む対象(task ファイルか playbook ファイルか)を明確に区別することを目的に行われたようです。

https://muziyoshiz.hatenablog.com/entry/2018/01/15/231213

2018-06-12

postgresql.auto.conf ALTER SYSTEM

11:37

https://www.postgresql.jp/document/10/html/config-setting.html

postgresql.confに加え、PostgreSQLデータディレクトリには postgresql.auto.confというファイルがあります。このファイルは postgresql.conf と同じフォーマットですが、手動では編集しません。 このファイルは ALTER SYSTEM コマンドを使った設定値を保存します。 このファイルはpostgresql.conf が読み込まれるときはいつでも同時に読み込まれ、同じように設定が反映されます。 postgresql.auto.confは、postgresql.confの設定を上書きします。

2018-06-11

pgbouncer

12:01

https://pgbouncer.github.io/

FreeBSD 10.1にpgbouncerをインストールする

https://symfoware.blog.fc2.com/blog-entry-1738.html

Possible solutions:

Reconnect after a certain number of requests

Add more memory

Connection pooling to put a ceiling on the number of postgres connections using pgpool-II or PgBouncer

https://stackoverflow.com/questions/20514569/idle-postgres-processes-taking-up-lots-of-memory

pgpool-II と PgBouncer 比較

2018-06-10

postgres log_temp_files

23:35

SELECTでディスク書き込みが発生している → log_temp_files で該当クエリを調査する → work_mem 調節する

log_temp_files = 0

Tempファイルを作ったらログ出力(単位はkb、デフォルト-1で出力しない

work_memの設定値を調節できる

1MBとか設定している人がいるけど、実際あとちょっとでメモリに乗り切っていないのを一番知りたいので0が適切

https://qiita.com/awakia/items/9981f37d5cbcbcd155eb

2018-05-29

OpenLDAPクライアント

12:31

設定ファイル

/etc/ldap.conf

pam_ldap、nss_ldap から利用されるファイルです。

nsswitch.conf で 「ldap」 を設定すると、このファイルの内容に従って処理が行われます。

/etc/openldap/ldap.conf

OpenLDAPに付いている、LDAPコマンドを実行するときに参照されるファイルです。

例えば、ldapsearch コマンドを実行する際に -x のみを指定すると、他に必要なパラメータはこのファイルから読みこまれます。

ldapsearch はLDAPサーバとの接続性を確認するものであって、正しくLDAPの情報が参照できても、PAM認証が正常に働くといったものではありません。

忘れんぼなサーバ管理者の備忘録 ? LDAP編 ?

LDAPサーバへの接続タイムアウト値を設定

公開鍵認証で AuthorizedKeysCommand で ldapsearch を使用している場合 は openldap/ldap.conf の設定も必要

/etc/ldap.conf
bind_timelimit 3

/etc/openldap/ldap.conf
NETWORK_TIMEOUT 3

MTAの特徴 - millsol millsol

2018-04-24

mysql innodb free tablespace warning

http://www.goofoo.jp/2012/01/1918

2018-04-19

office365 Too many recipients

15:58

(host メールサーバー名.mail.protection.outlook.com [23.xx.xx.xx] said: 452 4.5.3 Too many recipients (xxxxxx)[xxxJPN01.prod.protection.outlook.com] (in reply to RCPT TO command))

という感じでメールキューがたまりまくる。

ニリアコットの仕事: メールサーバーのIPを変えた際に起きたoffice365の受信問題

2018-04-17

wordpress memory

19:01

コードをしらべてみると、以下のとおりユーザ権限がmanage_optionsの時に、memory_limitを設定している事がわかりました

/wp-admin/admin.php

if ( current_user_can( 'manage_options' ) ) {
    @ini_set( 'memory_limit', apply_filters( 'admin_memory_limit', WP_MAX_MEMORY_LIMIT ) );
}

https://blog.e2info.co.jp/2015/08/10/wordpress_memory_limit/

2018-03-28

2018-03-26

2018-03-20

Chromeのリダイレクトキャッシュ

08:53

301 Moved Permanently

302 Moved Temporarily

https://holy-seo.net/blog/seo/seo-301-and-302-understanding/

上記のnginxの設定では、メンテナンス画面の表示に301リダイレクトを用いているが、Chromeは301リダイレクトのキャッシュを保持する仕様のため、キャッシュを読み取りメンテナンス画面にアクセスしてしまう動作になっていた。

https://qiita.com/y-ishizaka/items/26cfa388b2ba16d58543

この301ってChromeでは半恒久的なキャッシュを残しますよね。

人様のブラウザに半恒久的なキャッシュを残す命令は出せないです。

https://grewja.com/seo/2324

nginx

redirect

一時的なリダイレクトの意味で使います。このとき、HTTP ステータス番号 302 を返して、リダイレクトを実行します。

permanent

恒久的なリダイレクトの意味で使います。このとき、HTTP ステータス番号 301 を返して、リダイレクトを実行します。

https://server-setting.info/centos/apache-nginx-4-setting-redirect.html

2018-03-18

2018-03-07

ansible postgres

12:22

ansibleでpostgresqlインストール

https://qiita.com/kitaro_tn/items/04aa7279c17be8b9b0ed

To achieve your desired functionality add this to your sudoers file

%group1 ALL=(user2) NOPASSWD: /full/path/to/script2

This will allow group1 to run script2 as user2 without entering a password.

https://unix.stackexchange.com/questions/399586/sudo-u-in-script-still-prompts-for-invoking-user-password/399588

become_user: postgres には

`ansible実行ユーザ` ALL=(postgres) NOPASSWD: ALL

が必要、例

debian ALL=(vdc) NOPASSWD: ALL

su -u postgres でパスワードが必要だと sudo: a password is required のエラーになる。

http://docs.ansible.com/ansible/latest/become.html

postgresql_db_module

http://docs.ansible.com/ansible/latest/postgresql_db_module.html

https://stackoverflow.com/questions/29337686/pgsql-how-to-import-database-dump-only-when-database-completely-empty

DB作成時のみ、restoreをしたい場合

- postgresql_db: 
    name: "{{ dbname }}"
    encoding: "UTF-8"
  register: createdb
  become_user: postgres

- copy: src=restore.sql dest=/tmp/restore.sql

- postgresql_db: 
    name: "{{ dbname }}"
    state: restore
    target: /tmp/restore.sql
  become_user: postgres
  when: createdb.changed

2018-03-05

2018-03-04

2018-03-02

ansible 実行速度 ControlMaster Pipelining

12:51

ControlMaster: 有効 & pipeline: 有効

[defaults]
transport = ssh

[ssh_connection]
pipeline = true
ssh_args = -o ControlMaster=auto -o ControlPersist=300s 

https://blog.mosuke.tech/entry/2015/12/01/181304/