↑日記で日々積み重ねた情報をトップの「わんこのページ」にまとめています。

わんこ日記 [RDF] YouTubeも始めました→


2020-11-30(Mon) [Debian][MySQL] mariadb 10.5でportがlocalhostしか開かなくなる [長年日記] この日を編集

突然、おうちサーバのいくつかのサービスが不調になっていた。

とくにdockerコンテナ上のサービスがDB接続エラーを返してきていた。

「なんで突然?」と、接続できないということで、iptable周りを確認したけど、分からず。

[UPGRADE] mariadb-common:amd64 1:10.3.24-2 -> 1:10.5.8-3

[/var/log/aptidudeより引用]

と、金曜日にmariadbが10.3から10.5に上げたので

/etc/mysql以下を見ていて、

# Instead of skip-networking the default is now to listen only on

# localhost which is more compatible and is not less secure.

bind-address = 127.0.0.1

[/etc/mysql/mariadb.conf.d/50-server.cnfより引用]

というのを見つけて、bind-addressをlocalhostから変更して事なきを得る。


2020-11-29(Sun) [長年日記] この日を編集

[tt-rss] ログイン画面すら出ずtt-rssが真っ白画面

Nov 29 16:42:11 on-o.com php: [tt-rss] E_ERROR (1) (usr/share/php/php-php-gettext/gettext.php:325) Uncaught Error: Call to a member function evaluate() on null in /usr/share/php/php-php-gettext/gettext.php:325

[/var/log/messagesより引用]

とエラーが出ていたので、

[UPGRADE] php-php-gettext:amd64 1.0.12-0.1 -> 1.0.12-1

[/var/log/aptitudeより引用]

が原因のような気がするので、強制ダウングレード

dpkg: 警告: php-php-gettext を 1.0.12-1 から 1.0.12-0.1 にダウングレードしています

(データベースを読み込んでいます ... 現在 912998 個のファイルとディレクトリがインストールされています。)

.../php-php-gettext_1.0.12-0.1_all.deb を展開する準備をしています ...

php-php-gettext (1.0.12-0.1) で (1.0.12-1 に) 上書き展開しています ...

php-php-gettext (1.0.12-0.1) を設定しています ...

したら無事に動くようになった。

upgradeでphp-php-gettextが、でぐったのか? まあ、testingだけどね。


2020-10-21(Wed) [長年日記] この日を編集

[HDD] あり、SMARTのテストもパス

昨日のHDD壊れたかもとテストしていたのだけど

# smartctl -l selftest /dev/sdc

smartctl 7.1 2019-12-30 r5022 [x86_64-linux-5.7.0-2-amd64] (local build)

Copyright (C) 2002-19, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF READ SMART DATA SECTION ===

SMART Self-test log structure revision number 1

Num Test_Description Status Remaining LifeTime(hours) LBA_of_first_error

# 1 Extended offline Completed without error 00% 29737 -

# 2 Short offline Completed without error 00% 27040 -

# 3 Extended offline Completed: read failure 10% 27019 -

# 4 Extended offline Completed: read failure 10% 26953 -

# 5 Extended offline Completed without error 00% 21620 -

# 6 Short offline Completed without error 00% 12787 -

# 7 Extended offline Completed without error 00% 2366 -

# 8 Short offline Completed without error 00% 2346 -

2 of 2 failed self-tests are outdated by newer successful extended offline self-test # 1

代替セクターが効き始めたのか、エラー無く無事に終了している。

そういえば、#3, #4で起こっているリード失敗も治ったな。

[HDD] zfs scrubやSMARTセルフテスト中の性能

IOPSは、sdc TOSHIBA 8TBに比べて今回のsdc 4TBは半分

IOPS

sdcはzfs scrubで連続リードするとレイテンシーが落ちる。ちなみに緑のsdaはSSD

レイテンシ

SMARTの様子を見るとsmartctl_exit_statusが5:30ごろから0(正常)にもどっているのでセルフテストの途中で代替セクターが効くようになったのかな?

SMART

ちなみにscrubは2つのHDDの読み合わせなのでスループットは同じ

スループット

Utilizationは、遅いsdcが全力疾走していることがわかる

Utilization

全体みると、sdcのSeagate Desktop HDD.15 ST4000DM000 は、遅い。

けど、おうちさーばの通常状態では、全力出し切っていない。


2020-10-20(Tue) [長年日記] この日を編集

[HDD][ZFS] HDD壊れた ?

今回はzfsではなくて、SMARTさんからメール

This message was generated by the smartd daemon running on:

host name: host

DNS domain: on-o.com

The following warning/error was logged by the smartd daemon:

Device: /dev/sdc [SAT], 8 Offline uncorrectable sectors

Device info:

ST4000DM000-1F2168, S/N:12345678, WWN:5-100d50-093c40fdb, FW:CC54, 4.00 TB

For details see host's SYSLOG.

You can also use the smartctl utility for further investigation.

The original message about this issue was sent at Sat Oct 17 18:53:11 2020 JST

Another message will be sent in 24 hours if the problem persists.

ということで、4TBドライブが壊れて来ているらしい。

前回HDD交換した、2018年11月11日からの日記のようにzfs scrubしてみると

# zpool status -v

pool: tank

state: ONLINE

scan: scrub repaired 0B in 0 days 08:34:44 with 0 errors on Tue Oct 20 18:11:32 2020

config:

NAME STATE READ WRITE CKSUM

tank ONLINE 0 0 0

mirror-0 ONLINE 0 0 0

sdc1 ONLINE 0 0 0

sdb1 ONLINE 0 0 0

cache

sda3 ONLINE 0 0 0

errors: No known data errors

前回とは異なり、ZFSのファイルシステムにはダメージはまだ来ていない。

というわけで、SMARTでのオンラインテスト中

# smartctl -l selftest /dev/sdc

smartctl 7.1 2019-12-30 r5022 [x86_64-linux-5.7.0-2-amd64] (local build)

Copyright (C) 2002-19, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF READ SMART DATA SECTION ===

SMART Self-test log structure revision number 1

Num Test_Description Status Remaining LifeTime(hours) LBA_of_first_error

# 1 Extended offline Self-test routine in progress 80% 29730 -

# 2 Short offline Completed without error 00% 27040 -

# 3 Extended offline Completed: read failure 10% 27019 -

# 4 Extended offline Completed: read failure 10% 26953 -

# 5 Extended offline Completed without error 00% 21620 -

# 6 Short offline Completed without error 00% 12787 -

# 7 Extended offline Completed without error 00% 2366 -

# 8 Short offline Completed without error 00% 2346 -

このシーゲートの4TB HDDは、Head_Flying_Hours 29730h+40m+11.535s = 3年4ヶ月だから、もう少し使えるかと思って、だましだまし使ってる


2020-07-08(Wed) [Debian] SquidGuardが起動できずCPU 100% [長年日記] この日を編集

Debianパッケージのupgradeの後にCPU利用率が高く100%近い。

よく調べてみると

Jul 8 07:03:59 mirara squid[1533]: WARNING: redirector #Hlpr187879 exited

Jul 8 07:03:59 mirara squid[1533]: Too few redirector processes are running (need 1/5)

Jul 8 07:03:59 mirara squid[1533]: Starting new helpers

Jul 8 07:03:59 mirara squid[1533]: helperOpenServers: Starting 1/5 'squidGuard' processes

Jul 8 07:03:59 mirara squid[9206]: ipcCreate: /usr/bin/squidGuard: (13) Permission denied

と、squidの中で危険なサイトの中継をするSquidGuardが起動できていない。

url_rewrite_program /usr/bin/squidGuard -c /etc/squidguard/squidGuard.conf

と、/etc/squid/squid.confで設定しているのだけど…

なかなか思いあたらなかったが、squidバッケージのインストール時にapparmorの設定ファイルが入れ替えられた事を思い出し、新旧ファイルを比較しているがどちらもSquidGuardの設定はなく???だったが、

# aa-genprof /usr/sbin/squid

# aa-logprof

で、ログからapparmor設定に追加を入れたら、動くようになった。

このときに、バックアップ取り忘れて/etc/apparmor.d/usr.sbin.namedとusr.sbin.squidが書き換えられてオリジナルの設定ファイルが無くなってしまった。

バッケージの設定ファイルは、普通にreinstallするとユーザ設定が優先されて出てこないので、

# aptitude reinstall -o Dpkg::Options::="--force-confask" squid

として、設定ファイルの変更について聞いてくるようにして、「N」と答えて、.dpkg-distが残るようにする。


2020-05-19(Tue) Debianでゲームコントローラー [長年日記] この日を編集

[Debian] で、ゲームコントローラーGamesir T1sを使う

ミニドローンのTelloのコントール用に買ったゲームコントローラーのGamesir T1sだけど、Telloが何故か充電できなくなってから使わなくなってしまっていたのだけど、mameをやってみたくなり、使ってみることにした。

Windows 10では、USBケーブルでつないで、Gamesir T1sを「home」+「X」で起動すると、自動的にドライバーが入って、Windows 10の設定では、なぜかマウスと並んでBloutooth一覧に出てくるけど、Joystickとして認識されて、普通にmameからも使えた。

Debianでは、 「ゲームパッド - ArchWiki」を参考にして、「mame」「xdoxdrv」パッケージを入れて、Windows 10と同様に、USBケーブルでつないで、Gamesir T1sを「home」+「X」で起動すると

usb 1-1.2.1: new full-speed USB device number 80 using xhci_hcd

usb 1-1.2.1: New USB device found, idVendor=045e, idProduct=028e, bcdDevice= 1.10

usb 1-1.2.1: New USB device strings: Mfr=6, Product=7, SerialNumber=8

usb 1-1.2.1: Product: Controller

usb 1-1.2.1: Manufacturer: xiaoji

usb 1-1.2.1: SerialNumber: 0152793

input: Microsoft X-Box 360 pad as /devices/pci0000:00/0000:00:14.0/usb1/1-1/1-1.2/1-1.2.1/1-1.2.1:1.0/input/input154

usbcore: registered new interface driver xpad

と、XBoxのコントローラーとしてエミュレートされて認識されて、mameでも普通につかえた。

JoystickとかゲームコントローラーもDebianで簡単に認識される時代なんだなぁ


2019-10-25(Fri) [GitLab] GitLab 12.4のupgradeで失敗 [長年日記] この日を編集

GitLabは、OmnibusパッケージのDocker imageにしてから、upgradeに失敗することは無かったのだけど、12.4に上げたら

itlab-ce_1 | * bash[migrate gitlab-rails database] action run

gitlab-ce_1 | [execute] rake aborted!

gitlab-ce_1 | StandardError: An error has occurred, all later migrations canceled:

gitlab-ce_1 |

gitlab-ce_1 | Multiple indexes found on ci_trigger_requests columns [:trigger_id]. Specify an index name from ci_trigger_requests_trigger_id_idx, fk_rails_b8ec8b7245, index_ci_trigger_requests_on_trigger_id

gitlab-ce_1 | /opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/database/migration_helpers.rb:121:in `block in remove_concurrent_index'

で再起動を繰り返していた。

どうも「12.2.5 -> 12.3.1 Database migration failed: Multiple indexes found (#33084) · Issues · GitLab.org / GitLabの現象に近そうなので、インデックスを削除したらうまく行った。

$ docker-compose exec gitlab-ce bash

oot@gitlab-ce:/# gitlab-psql

psql (10.9)

Type "help" for help.

gitlabhq_production=# /d ci_trigger_requests

Table "public.ci_trigger_requests"

Column | Type | Collation | Nullable | Default

------------+--------------------------+-----------+----------+-------------------------------------------------

id | integer | | not null | nextval('ci_trigger_requests_id_seq'::regclass)

trigger_id | integer | | not null |

variables | text | | |

created_at | timestamp with time zone | | |

updated_at | timestamp with time zone | | |

commit_id | integer | | |

Indexes:

"ci_trigger_requests_pkey" PRIMARY KEY, btree (id)

"ci_trigger_requests_trigger_id_idx" btree (trigger_id)

"fk_rails_b8ec8b7245" btree (trigger_id)

"index_ci_trigger_requests_on_commit_id" btree (commit_id)

"index_ci_trigger_requests_on_trigger_id" btree (trigger_id)

"index_ci_trigger_requests_on_trigger_id_and_id" btree (trigger_id, id DESC)

Foreign-key constraints:

"fk_rails_b8ec8b7245" FOREIGN KEY (trigger_id) REFERENCES ci_triggers(id) ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED

gitlabhq_production=# drop index ci_trigger_requests_trigger_id_idx;

DROP INDEX

gitlabhq_production=# drop index index_ci_trigger_requests_on_trigger_id;

DROP INDEX

MySQLから無理くりPostgreSQLにデータをコンバートした弊害か?


2019-02-26(Tue) Tiny Tyin RSS画像大きすぎ [長年日記] この日を編集

TT-RSSのプラグインには1280pxという添付の画像を大きくするものはあるけど、JBpressとか東洋経済オンラインのRSSに付いてくる画像は大きすぎ、defaultではmax-width: 98%だけど、設定のカスタムRSSで

div.content > div.content-inner img {

max-width: 50%;

}

div.content > div.intermediate img {

max-width: 50%;

}

を追加して、画像を小さくした。


2019-02-11(Mon) tt-rss 18へupgradeで画面でなくなる [長年日記] この日を編集

Debian Packetのupgradeに伴い tt-rssを17.4から18.12にupgradeしたら、phpmailerは使わなくなり、Debian Pakcege依存での問題はなくなったのだけど、Webアクセスに行くと500エラーとなる。

[Tue Feb 11 13:26:08.708664 2019] [proxy_fcgi:error] [pid 13904:tid 139789892630272] [client 127.0.0.1:197] AH01071: Got error 'PHP message: PHP Fatal error: Uncaught PDOException: SQLSTATE[22001]: String data, right truncated: 1406 Data too long for column 'context' at row 1 in /usr/share/tt-rss/www/classes/logger/sql.php:18

Stack trace:

#0 /usr/share/tt-rss/www/classes/logger/sql.php(18): PDOStatement->execute(Array)

#1 /usr/share/tt-rss/www/classes/logger.php(28): Logger_SQL->log_error(8192, 'strpos(): Non-s...', 'vendor/JShrink/...', 184, '1. vendor/JShri...')

#2 /usr/share/tt-rss/www/include/errorhandler.php(43): Logger->log_error(8192, 'strpos(): Non-s...', 'vendor/JShrink/...', 184, '1. vendor/JShri...')

#3 [internal function]: ttrss_error_handler(8192, 'strpos(): Non-s...', 'vendor/JShrink/...', 184, '1. vendor/JShri...')\n

#4 /usr/share/tt-rss/www/vendor/JShrink/Minifier.php(184): strpos('(-+{[@', false)

#5 /usr/share/tt-rss/www/vendor/JShrink/Minifier.php(144): JShrink\\Minifier->loop()

#6 /usr/share/tt-rss/www/vendor/JShrink/Minifier.php(110): JShrink\\Minifier->minifyDirectToOutput('/* global dijit...', Array)

#7 ...'

というエラー。

「1406 Data too long for column 'context'」ということでどうやらLogを記録するために error_log に書き込む時にログメッセージであるcontextが長すぎたようなのでsubstr()で、MySQL text型の最長の65536文字に制限するバッチを/usr/share/tt-rss/www/classes/logger/sql.phpに当てた

--- sql.php.org 2018-11-30 23:02:05.000000000 +0900

+++ sql.php 2019-02-11 14:29:30.216183169 +0900

@@ -15,7 +15,7 @@

$sth = $this->pdo->prepare("INSERT INTO ttrss_error_log

(errno, errstr, filename, lineno, context, owner_uid, created_at) VALUES

(?, ?, ?, ?, ?, ?, NOW())");

- $sth->execute([$errno, $errstr, $file, $line, $context, $owner_uid]);

+ $sth->execute([$errno, $errstr, $file, $line, substr($context,0,65535), $owner_uid]);

return $sth->rowCount();

}


2019-02-05(Tue) [長年日記] この日を編集

Apache2でHTTP/2が止まっていた

一度有効にしたはずなApache2のHTTP/2なのだけど、

[Mon Feb 04 23:18:04.440099 2019] [http2:warn] [pid 25940] AH10034: The mpm module (prefork.c) is not supported by mod_http2. The mpm determines how things are processed in your server. HTTP/2 has more demands in this regard and the currently selected mpm will just not do. This is an advisory warning. Your server will continue to work, but the HTTP/2 protocol will be inactive.

という警告が出て、mpm_preforkでは使えなくなっていた。

mpmの切替は以前(って10年近く前?)に挑戦して余り印象が良くないのだけど、重要なサービスはDockerコンテナに移行していて、PHP CGIが変わる以外は影響が少なさそうなのでmpm_eventに移行してHTTP/2を有効にする。

mod_php7.3は、mpm_preforkが前提なのでPHP CGIをfcgidとphp7.3-fpmに変える。

# apt-get install php-fpm

# a2dismod php7.3 mpm_prefork

# a2enmod mpm_event fcgid proxy_fcgi

# a2enconf php7.3-fpm

途中、proxy_fcgiをenableにしていず、

[Mon Feb 04 23:20:03.788097 2019] [proxy:warn] [pid 10814] [client 54.36.149.80:28334] AH01144: No protocol handler was valid for the URL /wiki/index.php (scheme 'unix'). If you are using a DSO version of mod_proxy, make sure the proxy submodules are included in the configuration using LoadModule.

というエラーが出て嵌ったけれど、php7.3-fpm.confでproxy_fcgiが無いと有効にならないことに気がついて見つけた。

Apache2でHTTP/2が止まっていた

一度有効にしたはずなApache2のHTTP/2なのだけど、

[Mon Feb 04 23:18:04.440099 2019] [http2:warn] [pid 25940] AH10034: The mpm module (prefork.c) is not supported by mod_http2. The mpm determines how things are processed in your server. HTTP/2 has more demands in this regard and the currently selected mpm will just not do. This is an advisory warning. Your server will continue to work, but the HTTP/2 protocol will be inactive.

という警告が出て、mpm_preforkでは使えなくなっていた。

mpmの切替は以前(って10年近く前?)に挑戦して余り印象が良くないのだけど、重要なサービスはDockerコンテナに移行していて、PHP CGIが変わる以外は影響が少なさそうなのでmpm_eventに移行してHTTP/2を有効にする。

mod_php7.3は、mpm_preforkが前提なのでPHP CGIをfcgidとphp7.3-fpmに変える。

# apt-get install php-fpm

# a2dismod php7.3 mpm_prefork

# a2enmod mpm_event fcgid proxy_fcgi

# a2enconf php7.3-fpm

途中、proxy_fcgiをenableにしていず、

[Mon Feb 04 23:20:03.788097 2019] [proxy:warn] [pid 10814] [client 54.36.149.80:28334] AH01144: No protocol handler was valid for the URL /wiki/index.php (scheme 'unix'). If you are using a DSO version of mod_proxy, make sure the proxy submodules are included in the configuration using LoadModule.

というエラーが出て嵌ったけれど、php7.3-fpm.confでproxy_fcgiが無いと有効にならないことに気がついて見つけた。


Google Web検索 on-o.com内を検索