WordPressのお引っ越し

ドメイン名の変更に合わせてWordPressも合わせるように変更かけましたがこれが意外と大変でした。専用ツールを使わずに修正するのは問題がありました。(専用ツール:WP MIGRATE DB PRO

PHPファイルはgrep等で検索してエディタで編集するか、findとsedを組み合わせて変更できます。

find . -name "*.php" -exec sed -i "s/foo/bar/g" {} \;

ところがデータベースにあるパス名はいったんダンプして修正かける必要があります。最初はテキストエディタで修正してみたところ時間がかかりすぎて現実的ではありません。結局、sedを使って修正しました。前回サブディレクトリにあったWordPressをルートパスに持ってきたため、相対パスと絶対パスのサブディレクトリの修正とドメイン名の修正の両方をかける必要がありました。

mysqldump -u root -p wordpressdb > wordpressdb.sql
sed -i 's|/hottuna.server-on.net/computing|/labs.hottuna.tk|g' wordpressdb.sql
sed -i 's|/computing||g' wordpressdb.sql
mysql -u root -p wordpressdb < wordpressdb.sql

今のところ、うまく動いているようですが万が一おかしくなったらバックアップからもとに戻すつもりです。

追記1:
検索したらもっとスマートな方法がありました。サブディレクトリの変更は書いてありませんが、私のサイトではサブディレクトリから ルートパスに移動したときに’/var/www/wordpress/wordfence-waf.php’がないというエラーがあって立ち上がりませんでした。これを’/var/www/wordpress/wordfence-waf.php’とする必要がありました。

UPDATE wp_options SET option_value = replace(option_value, 'http://www.oldurl', 'http://www.newurl') WHERE option_name = 'home' OR option_name = 'siteurl';
UPDATE wp_posts SET guid = replace(guid, 'http://www.oldurl','http://www.newurl');
UPDATE wp_posts SET post_content = replace(post_content, 'http://www.oldurl', 'http://www.newurl');
UPDATE wp_postmeta SET meta_value = replace(meta_value,'http://www.oldurl','http://www.newurl');

追記2:
wordfence-wafのパスの問題はデータベースではありませんでした。引っ越しするときはwordfenceのfirewallをオフにするということらしいです。

追記3:

今回移動したVPSはA2ホスティングです。A2ホスティングは評判が良かったので決めたのですが、速度を取る代わりに制限があります。openvzというシステムを使っているので完全なLinuxシステムではありません。何が問題かというとカーネルが2.6という化石のカーネルを使っているためドライバの制限があります。具体的にはブリッジができないとかIKEv2、dockerのようなコンテナもだめです。openvpnはtunデバイスを使ってできますがsystemdから起動できずコマンドから起動するような状況です。今使っているKVM系のVPSも残しておくので互いの欠点を補ってくれるので相乗効果があるかなと考えてます。Webサーバはopenvz、仮想通貨botはkvmという形です。

もう一つ重要な点はIPを分散しておくことです。シンガポールにあるサーバを使っていますが、VPN経由で取引すればリスクオフにもなります。日本における仮想通貨は極めてグレーです。それなのでビジネスが明快なシンガポールにサーバを置くのは正しい選択だと考えています。

追記4:OpenVZでOpenVpnを使うとき次のようなエラーが出たときの解決策

Aug 29 10:20:47 hottuna openvpn[3869]: TUN/TAP device tun0 opened
Aug 29 10:20:47 hottuna openvpn[3869]: TUN/TAP TX queue length set to 100
Aug 29 10:20:47 hottuna openvpn[3869]: do_ifconfig, tt->did_ifconfig_ipv6_setup=0
Aug 29 10:20:47 hottuna openvpn[3869]: /sbin/ip link set dev tun0 up mtu 1500
Aug 29 10:20:47 hottuna openvpn[3869]: openvpn_execve: unable to fork: Resource temporarily unavailable (errno=11)
Aug 29 10:20:47 hottuna openvpn[3869]: Exiting due to fatal error
Aug 29 10:20:47 hottuna systemd[1]: openvpn-server@server.service: Main process exited, code=exited, status=1/FAILURE
Aug 29 10:20:47 hottuna systemd[1]: Failed to start OpenVPN service for server.
Aug 29 10:20:47 hottuna systemd[1]: openvpn-server@server.service: Unit entered failed state.
Aug 29 10:20:47 hottuna systemd[1]: openvpn-server@server.service: Failed with result 'exit-code'.

sudo systemctl edit openvpn@

[Service]
LimitNPROC=infinity

 

cactiのインストール

以前にsnmpのインストールの記事を書きましたが本格的にsnmpを使ってシステム管理をしようとしてcactiのインストールに躓いたのでまとめることにしました。

TVBOX(Amlogic S905x)にarmbian(Armbian_5.91_Aml-s905_Debian_buster_default_5.1.0_20190708.img)をインストールしたものを使っています。 またそのarmbianにlxcでホストを分割して複数台サーバーを起動しています。今回の場合、mysqlとcactiを個別にインストールしています。(すべて一つにまとめるときはデータベースのアドレスをlocalhostとします。またデータベースはIPよりもソケットを使ったほうが速くなります、すなわちlocalhostのほうが速くなります。)

snmpのインストール

apt-get install snmp snmpd snmp-mibs-downloader

インストール時に設定画面がでますがここでは設定を行いません

Web server: None

DConfigure database for cacti with dbconfig-common? : [select No]

snmpの設定ファイルを編集します

/etc/snmp/snmp.conf

# mibs :

/etc/snmp/snmpd.conf

agentAddress udp:161,udp6:[::1]:161
sysDescr HOST NAME  (e.g. A2 hosting VPS)
sysObjectID .1.3.6.1.4.1.4526.100.16.1
group MyROGroup v1 readonly
group MyROGroup v2c readonly
group MyROGroup usm readonly
view all included .1 80
access MyROGroup "" any noauth exact all none none
dontLogTCPWrappersConnects 1
com2sec readonly default public
trapcommunity public
master agentx
agentXTimeout 8
agentXRetries 2

IPv6を使わない場合は次のように置き換えてください。

agentAddress udp:161

テスト

snmpwalk -v 2c -c public ${IP}

cactiのインストール

apt-get -y install rrdtool cacti cacti-spine wget patch unzip zip bash-completion

phpのインストール

apt-get -y install php php-common php-curl php-fpm php-gd php-gettext php-gmp php-imap php-intl php-json php-ldap php-mbstring php-memcache php-mysql php-net-socket php-pear php-php-gettext php-phpseclib php-pspell php-recode php-snmp php-tidy php-twig php-xml php-xmlrpc

設定の編集(php ver7.3の場合)
/etc/php/7.3/fpm/php.ini

file_uploads = On
date.timezone = Asia/Tokyo

/etc/php/7.3/cli/php.ini

date.timezone = Asia/Tokyo

確認用

echo '<?php phpinfo(); ?>' | tee /var/www/html/info.php

Nginxのインストールと設定

apt install nginx-full
ln -s /usr/share/cacti/site /var/www/cacti

/etc/nginx/sites-available/cacti

server {
    listen 80 default_server;
    #root /var/www/html;
    #index index.html;
    access_log /var/log/nginx/access.log;
    error_log /var/log/nginx/error.log;

    location / {
        return 301    http://<HOST IP>/cacti$request_uri;
    }
    location /cacti {
        alias /var/www/cacti;
        index index.php;
        #try_files $uri /index.php =404;
        location ~ ^/cacti(/.*\.php)$ {
            fastcgi_pass unix:/var/run/php/php7.3-fpm.sock;
            fastcgi_index index.php;
            fastcgi_param SCRIPT_FILENAME $request_filename;
            fastcgi_param PATH_INFO $fastcgi_path_info;
            include fastcgi_params;
        }
    }
}
ln -s /etc/nginx/sites-available/cacti /etc/nginx/sites-enabled/cacti

データーベースのインストールと設定(ネットワークからアクセス)

apt-get install mariadb-server mariadb-common

Timezoneデータベースを更新します

mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root -p mysql
Enter password:
Warning: Unable to load '/usr/share/zoneinfo/leap-seconds.list' as time zone. Skipping it.

/etc/mysql/mariadb.conf.d/50-server.cnf

[mysqld]
#bind-address = 127.0.0.1
bind-address = 0.0.0.0
max_heap_table_size=128M
tmp_table_size=128M
join_buffer_size=64M
innodb_buffer_pool_size=512M
innodb_doublewrite=OFF
innodb_flush_log_at_timeout=3
innodb_read_io_threads=32
innodb_write_io_threads=16
default-time-zone = 'Asia/Tokyo'
# mysql -u root -p
Welcome to the MariaDB monitor. Commands end with ; or \g.
...

MariaDB [(none)]> create database cactidb;
Query OK, 1 row affected (0.000 sec)

MariaDB [(none)]> grant all privileges on cactidb.* to 'cactiuser'@'<cacti ip="">' identified by '<password>';
Query OK, 0 rows affected (0.001 sec)

MariaDB [(none)]> flush privileges;
Query OK, 0 rows affected (0.001 sec)

MariaDB [(none)]> exit
Bye</cacti>

cactiのデータベースファイルを読み込みます

mysql -u cactiuser -h <MYSQL IP> -p cactidb < /usr/share/cacti/conf_templates/cacti.sql
systemctl restart mariadb

テスト

mysql -u cactiuser -h <IP> -p
Enter password:
...
MariaDB [(none)]> show databases;
MariaDB [(none)]> select @@tmp_table_size;
MariaDB [(none)]> show variables like 'join_buffer_size';
MariaDB [(none)]> quit
Bye

/etc/cacti/debian.php

$database_type     = 'mysql';
$database_default  = 'cactidb';
$database_hostname = '<MYSQL HOST IP>';
$database_username = 'cactiuser';
$database_password = '<password>';
$database_port     = '3306';
$database_ssl      = false;
$database_ssl_key  = '';
$database_ssl_cert = '';
$database_ssl_ca   = '';

/etc/cacti/spine.conf

DB_Host <MYSQL HOST IP>
DB_Database cactidb
DB_User cactiuser
DB_Pass <password>
DB_Port 3306

RDB_Host <MYSQL HOST IP>
RDB_Database cactidb
RDB_User cactiuser
RDB_Pass <password>
RDB_Port 3306

ポーラーを5分ごとにセットします

crontab -u www-data -e
*/5 * * * * /usr/bin/php /var/www/cacti/poller.php >> /var/log/cacti/cron.log 2>&1

あるいは、cactiでもログを取っているので省略する場合、

*/5 * * * * /usr/bin/php /var/www/cacti/poller.php > /dev/null 2>&1

タイムゾーンのアクセス権を設定します

mysql -u root -p 
MariaDB [(none)]> show variables like '%time_zone%';
MariaDB [(none)]> grant select on mysql.time_zone_name to 'cactiuser'@'<cacti IP>' identified by '<password for cactiuser>';
MariaDB [(none)]> flush privileges;

サーバのタイムゾーンを変更します

rm -rf /etc/localtime
ln -s /usr/share/zoneinfo/Asia/Tokyo /etc/localtime

テスト

MariaDB [cactidb]> use cactidb;
MariaDB [cactidb]> select * from poller_output;

パーミッションの変更

cd /usr/share/cacti
chown -R www-data.www-data site
chown -R www-data.www-data resource

シンボリックリンクを貼ります。

ln -s /usr/share/cacti/site cacti

サーバを再起動します。

systemctl start php7.3-fpm
systemctl start nginx

ログインします。

username: admin
Password: admin

Screenshot

Ablenet vs. A2 Hosting

Ablenet
A2 Hosting

Ablenet VPSはHDDタイプなのでかなり遅めです。A2 Hostingは負荷かけてもそれほど影響が出ません。抜群の性能です。WPの表示速度がこのLoad Aver.数値そのまま反映されます。

追記1:

phpのバージョンによってメール機能がエラーになることがあります。

$sPattern = '/([\w\s'"+]+[\s]+)?(<)?(([\w-.+]+)@((?:[\w-]+.)+)([a-zA-Z]{2,4}))?(>)?/';

with

$sPattern = '/([\w\s\'\"+]+[\s]+)?(<)?(([\w-.+]+)@((?:[\w-]+.)+)([a-zA-Z]{2,4}))?(>)?/';

it works on Debian/Sid php7.3

追記2:macOSの設定

設定ファイルを編集します。

/etc/snmp/snmpd.conf

変更前:

com2sec local localhost COMMUNITY 
com2sec mynetwork NETWORK/24 COMMUNITY
...
rocommunity public default .1.3.6.1.2.1.1.4
...
#rwcommunity private

変更後:
com2sec local localhost private 
com2sec mynetwork NETWORK/24 public
...
rocommunity public default .1
...
rwcommunity private

サービスを起動します。

launchctl load -w /System/Library/LaunchDaemons/<a rel="noreferrer noopener" target="_blank" href="http://org.net/">org.net</a>-snmp.snmpd.plist

ファイヤーウォールを使う場合、設定をします。

sudo pfctl -e
出力:
pfctl: Use of -f option, could result in flushing of rules
present in the main ruleset added by the system at startup.
See /etc/pf.conf for further details.
No ALTQ support in kernel
ALTQ related functions disabled
bash-3.2# sudo pfctl -e
No ALTQ support in kernel
ALTQ related functions disabled
pf enabled

/etc/pf.conf

追加:
pass in proto udp from ${network}/${prefix} to any port = 161

テスト

pfctl -nf /etc/pf.conf

出力:
pfctl: Use of -f option, could result in flushing of rules
present in the main ruleset added by the system at startup.
See /etc/pf.conf for further details.

有効にします。

pfctl -f /etc/pf.conf

504 Gateway Timeout /502 Bad Gateway errorの対処法

原因はサーバのレスポンスが遅いことです。システムのアップグレードが最短なのですがそういうわけにもいかないときの処方です。検索すれば同じような答えがヒットするのですが私の環境に合わせる形で修正しました。

nginx: ‘fastcgi_read_timeout 60;’を挿入します

location ~ \.php$ {
        root            /var/www/wordpress ;
        fastcgi_index index.php;
        fastcgi_param HTTPS           $https if_not_empty;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include        fastcgi_params;
        fastcgi_read_timeout 60;
        fastcgi_pass unix:/run/php/php7.2-fpm.sock;
    }
;

php: /etc/php/7.2/fpm/pool.d/www.conf: コメントを取って変更します。

request_terminate_timeout = 60

php: /etc/php/7.2/fpm/php.ini: 値を変更します

max_execution_time = 60

プロキシサーバ
/etc/nginx/nginx.conf

http {
...
        proxy_connect_timeout       180;
        proxy_send_timeout          180;
        proxy_read_timeout          180;
        send_timeout                180;
...
}

php-fpmとnginxを再起動します。

VPSホスティングの私見

IT関連では評判と違うということはよくあることで、よく検索等で調べてるつもりでもいままでに結構失敗しています。過去の記事に書きましたがアマゾンのマーケットプレース詐欺では返金はしてもらえたものの、米アマゾンなので高い国際送料は返ってきません。越境ECではモノよりも送料が高いので瑕疵があっても返品できないというリスクがあります。VPSについてもなかなか良いプロバイダーを見つけるのは難しい。海外ではA2ホスティングが評判いいので使ってみたいと思っていますが、いずれ国内1台、海外1台VPSを持つ予定にしています。国内限定でどこのVPSプロバイダーが良いか私見で書きたいと思います。

検索すると「VPS比較ランキング2019完全版」というのがあってわかりやすく比較してあります。じつはこれを見てVPSを申し込んでみたのですが数時間触っただけで使い物にならないことがわかりました。米アマゾンの例と同様に評判と実際はかなり違います。サイトを補足する意味でそのおすすめランキングに沿って私見で評価してみます。

8位:ServersMan@VPS
350円のはディスク容量とメモリが少なく使い物になりません。CPUコア不明というのが意味が分かりません。基本スペックなので必ずどのVPSプロバイダーも書いてあります。致命的な問題は障害が多いということです。オススメできません。

7位:お名前.com VPS
1GBプランはCPUとメモリのスペックはよいでしょう。ただしSSDでないのでオススメできませんがRAID10なので安定感はあります。SSH接続が先進的な機能という表現はちょっと怪しさ感じます。なぜならSSH接続が基本の基だからです。KVMでOSはアップロードできるのは良いでしょう。おそらくレスキューモードもあったほうが万が一不具合があった特に修復できます。コンテナだと不可能なのでじめからセットアップとなると時間の無駄です。評価はまずまずです。

6位:GMOクラウドVPS
初期費用が4000円と高いです。今の御時世は初期費用が無料のところが多いです。ストレージもHDDタイプのだけです。アダルトサイトの動画だと帯域が無くなりそうですがロードバランサーがないということで肝心のネットワークが心配です。オススメできません。

5位:WebARENA VPS
一見良さそうに見えます。実は私は契約したのですが大失敗でした。これはVPSじゃなくてクラウドのインスタンスです。それなのでVPSのような自由度はありません。また使い始めて1時間とたたないうちにダッシュボードのセキュリティグループが固まって使い物にならなくなりました。これを設定しないとSSHログインができないみたいです。みたいですというのがログインできなかっらからです。自分たちが勝手に作ったルールでまともに動かないということですぐ解約しました。またサイト見るとあるプランの機種のメンタナンス情報が載っていてまる一日もかかると書いてありました。普通のVPSなら稼働率は99.9%以上あるのでこれは論外です。すべてが常識外なのでオススメできません。

追記1:解約でトラブル

下のダッシュボードを見ると更新して解約となっています。おかしいですね。すぐ解約してほしかったけど8月いっぱいなら仕方ないと思ってたけど、ダッシュボード見て唖然としました。契約更新って?普通の会社ならありえませんね。

追記2:遅い->普通
ネットで検索してログイン方法を調べました。ubuntuはサポート外です。自分でやれというのがこの会社の方針です。調べたところubuntuはユーザー名がubuntuでログインできます。パスワードはインスタンス名からi-をとったものがパスワードになります。これでようやくsshからもコンソールからもログインできるようになりました。勝手がわからないユーザはログインできない仕組みです。まったくひどい対応です。
動くようになってすぐ気がついたのですが遅い。そこでCPUを調べてみました。

# cat /proc/cpuinfo 
processor	: 0
vendor_id	: GenuineIntel
cpu family	: 6
model		: 42
model name	: Intel Xeon E312xx (Sandy Bridge)
stepping	: 1
microcode	: 0x1
cpu MHz		: 2199.998
cache size	: 4096 KB

2世代のSandy Bridgeです。ちなみにAblenetはXeon(R) CPU E5-2640 v2で3世代目です。古いと思っていますが、これより古いとは論外ですがまあいいでしょう。ちなみにSandy BridgeはCPUバグのパッチが当たっているはずですがこれ他のアーキテクチャーより遅くなります。

追記3:セキュリティポリシーが固まる問題
適当にタブ等をクリックしていると治ります。おそらく設定ミスがあると固まるようです。こんなことは初心者にはわからないしシステム設計ミスです。

追記4:通信速度の計測

# iperf -c <IP>
------------------------------------------------------------
Client connecting to <IP>, TCP port 5001
TCP window size: 85.0 KByte (default)
------------------------------------------------------------
[  3] local <MY VPS IP> port 56372 connected with <IP> port 5001
[ ID] Interval       Transfer     Bandwidth
[  3]  0.0-10.0 sec   127 MBytes   106 Mbits/sec

速度は100Mbits出ているので標準でしょう。でも何かが遅い感じです。

4位:ABLENET VPS
実は今使っているVPSで3年以上は使っていると思います。当時はHDDタイプのみだったのでそのままずっと使い続けています。スペック的には平均的で特徴はありません。良いところは共用回線が200MBあるのでバックボーンは良い方です。今まで使っていて稼働率も申し分なくいいです。A2ホスティングは転送量2TBなのでスペック的にはABLENET VPSは良いでしょう。ただあまりサービスは良くないです。良くも悪くも日本的で問い合わせもテンプレート的な答えしか返ってきません。海外は違いますね。ネット越しに相手が見えます。つまり相手の個性が見えます。日本の場合は機械が答えているのか人間が答えているのかわからないときがあります。どちらがいいかといえば海外の方がいいです。安心感がありますからね。辛口に書きましたが基本的なものはしっかりしているので私の評価はオススメです。

3位:KAGOYA CLOUD/2
WebARENAと同じインスタンスのクラウドなので長期使用には不安ですね。Open VZはサポートの終わった古いシステムです。いまだに使い続けているのはシステムが古いのかも知れません。不安ですね。KVMタイプなら使えるかも知れません。

追記:A2Hostingで使っているので評価は保留です。OpenVZのカーネルは古いですがシステムが軽快でWordPressのレスポンスが良いからです。ただカーネルドライバーがかなり制限されるので苦労すると思います。

2位:さくらVPS
私が昔、最初に使ったVPSです。ABLENETと同じようなVPSです。対応はやはり悪いです。ちょっと割高ですね。評価はまずまずです。ただ口コミでサポートは最悪という評価を見たのでどうなんでしょうか、という疑問はあります。データセンターで不具合が起きたときの対応が酷いとのことです。自分の技術不足でググれと言われるのなら仕方ありませんが、会社側の問題であれば懸念すべき対応です。思い出しましたがさくらをやめたのは勝手にVPSを停止されたせいでした。政治的な見解の線引きどうなっているのか知りたいくらいです。約款には明確な基準がないのでこちらでは判断つきません。これもリスクのうちです。きちんとコミュニケーションの取れる会社を選びましょう。

追記:さくらのIOPSの上限でかなり問題になっています。オススメできません。ホスティング側に余裕がないためシステムが使えないことと同じです。さらにシステムの設計でしきい値をこのIOPSに合わせないと行けませんね。安定稼働のしきい値だからです。従ってさくらを使うことは低いレベルのシステムを組むと同義なので絶対避けなければならないVPSホスティング業者です。

1位:ConoHaVPS
スペックの値段は標準で初期費用無料なので申し分ないと思います。オススメと言いたいところですが、会社概要見ると「GMOインターネット株式会社」とあります。GMOクラウドVPSが前にでてましたね。なんで同じGMOが同じようなVPSサービスしているのか不思議だったので検索してみたらグループ会社ということです。一つはアダルト用、もう一つは法人用、こういうのは私的にはNGです。親会社の社風というのが当然、グループ会社にも共通してあるわけなので、コンプライアンスはどうなんでしょう的な感じなので、一見良さそうですがオススメできません。

追記1:
ネット上では概ね評判いいんですがGmail問題があるようです。IPのブラックリストに載っているためどうにもなりません。私が書いたとおりコンプライアンス問題がこういうところに出てきます。これだけ慎重になってもいろいろ選択に失敗しています。

こうしてみると私のオススメとしてさくらVPSかABLENET VPSということになります。さくらはデータセンターが国内3箇所から選べるのでリスク分散にはなります。費用対策効果はABLENET VPSということになります。

追記:CPUのストレステスト

今、使っているABLENET VPSも遅いのでベンチマークと取ってみました。

ABLENET VPS:制限がかかってるんでしょうか?スコアは低いです。安定稼働なので良しとしましょう。

$ stress-ng --cpu 1 --cpu-method matrixprod  --metrics-brief --perf -t 60
stress-ng: info:  [7219] dispatching hogs: 1 cpu
stress-ng: info:  [7219] successful run completed in 60.01s (1 min, 0.01 secs)
stress-ng: info:  [7219] stressor       bogo ops real time  usr time  sys time   bogo ops/s   bogo ops/s
stress-ng: info:  [7219]                           (secs)    (secs)    (secs)   (real time) (usr+sys time)
stress-ng: info:  [7219] cpu                4965     60.01     58.19      0.65        82.74        84.38
stress-ng: info:  [7219] Cannot read perf counters, do not have CAP_SYS_ADMIN capability or /proc/sys/kernel/perf_event_paranoid is set too high (3)

WebARENA VPS:

$ stress-ng --cpu 1 --cpu-method matrixprod  --metrics-brief --perf -t 60
stress-ng: info:  [29093] dispatching hogs: 1 cpu
stress-ng: info:  [29093] successful run completed in 60.01s (1 min, 0.01 secs)
stress-ng: info:  [29093] stressor       bogo ops real time  usr time  sys time   bogo ops/s   bogo ops/s
stress-ng: info:  [29093]                           (secs)    (secs)    (secs)   (real time) (usr+sys time)
stress-ng: info:  [29093] cpu                9556     60.00     59.76      0.08       159.25       159.69
stress-ng: info:  [29093] Cannot read perf counters, do not have CAP_SYS_ADMIN capability or /proc/sys/kernel/perf_event_paranoid is set too high (3)

A2 HOSTING:

$ stress-ng --cpu 1 --cpu-method matrixprod  --metrics-brief --perf -t 60
stress-ng: info:  [19202] dispatching hogs: 1 cpu
stress-ng: info:  [19202] cache allocate: using built-in defaults as unable to determine cache details
stress-ng: info:  [19202] cache allocate: default cache size: 2048K
stress-ng: info:  [19202] successful run completed in 60.00s (1 min, 0.00 secs)
stress-ng: info:  [19202] stressor       bogo ops real time  usr time  sys time   bogo ops/s   bogo ops/s
stress-ng: info:  [19202]                           (secs)    (secs)    (secs)   (real time) (usr+sys time)
stress-ng: info:  [19202] cpu               10020     60.00     59.91      0.00       166.99       167.25

ThinkCentre core i5(自分のPC):

$ stress-ng --cpu 1 --cpu-method matrixprod  --metrics-brief --perf -t 60
stress-ng: info:  [23251] dispatching hogs: 1 cpu
stress-ng: info:  [23251] successful run completed in 60.00s (1 min, 0.00 secs)
stress-ng: info:  [23251] stressor       bogo ops real time  usr time  sys time   bogo ops/s   bogo ops/s
stress-ng: info:  [23251]                           (secs)    (secs)    (secs)   (real time) (usr+sys time)
stress-ng: info:  [23251] cpu               16669     60.00     59.99      0.00       277.81       277.86
stress-ng: info:  [23251] Cannot read perf counters, do not have CAP_SYS_ADMIN capability or /proc/sys/kernel/perf_event_paranoid is set too high (3)

CPUs = 2の設定:CPUの温度で周波数を制御しているので単純にスコアが倍にはならない。

$ stress-ng --cpu 2 --cpu-method matrixprod  --metrics-brief --perf -t 60
stress-ng: info:  [24878] dispatching hogs: 2 cpu
stress-ng: info:  [24878] successful run completed in 60.00s (1 min, 0.00 secs)
stress-ng: info:  [24878] stressor       bogo ops real time  usr time  sys time   bogo ops/s   bogo ops/s
stress-ng: info:  [24878]                           (secs)    (secs)    (secs)   (real time) (usr+sys time)
stress-ng: info:  [24878] cpu               28323     60.00    119.92      0.01       472.03       236.16
stress-ng: info:  [24878] Cannot read perf counters, do not have CAP_SYS_ADMIN capability or /proc/sys/kernel/perf_event_paranoid is

自宅サーバのTVBOX(arm64)

# stress-ng --cpu 1 --cpu-method matrixprod  --metrics-brief --perf -t 60
stress-ng: info:  [11415] dispatching hogs: 1 cpu
stress-ng: info:  [11415] cache allocate: using defaults, can't determine cache details from sysfs
stress-ng: info:  [11415] successful run completed in 60.52s (1 min, 0.52 secs)
stress-ng: info:  [11415] stressor       bogo ops real time  usr time  sys time   bogo ops/s   bogo ops/s
stress-ng: info:  [11415]                           (secs)    (secs)    (secs)   (real time) (usr+sys time)
stress-ng: info:  [11415] cpu                 116     60.51     59.49      0.00         1.92         1.95
stress-ng: info:  [11415] cpu:
stress-ng: info:  [11415]                84676906441 CPU Cycles                      1.40 B/sec
stress-ng: info:  [11415]                80463885958 Instructions                    1.33 B/sec (0.950 instr. per cycle)
...

CPUs = 4

# stress-ng --cpu 4 --cpu-method matrixprod  --metrics-brief --perf -t 60
stress-ng: info:  [11607] dispatching hogs: 4 cpu
stress-ng: info:  [11607] cache allocate: using defaults, can't determine cache details from sysfs
stress-ng: info:  [11607] successful run completed in 60.31s (1 min, 0.31 secs)
stress-ng: info:  [11607] stressor       bogo ops real time  usr time  sys time   bogo ops/s   bogo ops/s
stress-ng: info:  [11607]                           (secs)    (secs)    (secs)   (real time) (usr+sys time)
stress-ng: info:  [11607] cpu                 386     60.13    235.81      0.10         6.42         1.64
stress-ng: info:  [11607] cpu:
stress-ng: info:  [11607]               335389827036 CPU Cycles                      5.56 B/sec
stress-ng: info:  [11607]               266689249300 Instructions                    4.42 B/sec (0.795 instr. per cycle)
stress-ng: info:  [11607]                30555532840 Branch Instructions             0.51 B/sec
stress-ng: info:  [11607]                  530788308 Branch Misses                   8.80 M/sec ( 1.74%)
stress-ng: info:  [11607]               111755799640 Bus Cycles                      1.85 B/sec
stress-ng: info:  [11607]                19560625320 Cache References                0.32 B/sec
stress-ng: info:  [11607]                  819285168 Cache Misses                   13.59 M/sec ( 4.19%)
stress-ng: info:  [11607]                19563827872 Cache L1D Read                  0.32 B/sec
stress-ng: info:  [11607]                  820184892 Cache L1D Read Miss            13.60 M/sec
stress-ng: info:  [11607]                    8205948 Cache L1D Prefetch Miss         0.14 M/sec
stress-ng: info:  [11607]               169405947964 Cache L1I Read                  2.81 B/sec
stress-ng: info:  [11607]                   15720472 Cache L1I Read Miss             0.26 M/sec
stress-ng: info:  [11607]                     138872 Cache DTLB Read Miss            2.30 K/sec
stress-ng: info:  [11607]                      12680 Cache ITLB Read Miss          210.26 /sec 
stress-ng: info:  [11607]                51445283604 Cache BPU Read                  0.85 B/sec
stress-ng: info:  [11607]                  530570508 Cache BPU Read Miss             8.80 M/sec
stress-ng: info:  [11607]                 1769466964 Cache NODE Read                29.34 M/sec
stress-ng: info:  [11607]                   62324636 Cache NODE Write                1.03 M/sec
stress-ng: info:  [11607]               239147723036 CPU Clock                       3.97 B/sec
stress-ng: info:  [11607]               239148808256 Task Clock                      3.97 B/sec
stress-ng: info:  [11607]                        796 Page Faults Total              13.20 /sec 
stress-ng: info:  [11607]                        796 Page Faults Minor              13.20 /sec 
stress-ng: info:  [11607]                          0 Page Faults Major               0.00 /sec 
stress-ng: info:  [11607]                       3372 Context Switches               55.91 /sec 
stress-ng: info:  [11607]                          0 CPU Migrations                  0.00 /sec 
stress-ng: info:  [11607]                          0 Alignment Faults                0.00 /sec 
stress-ng: info:  [11607]                          0 Emulation Faults                0.00 /sec

UnixBench

Do be aware that this is a system benchmark, not a CPU, RAM or disk benchmark. The results will depend not only on your hardware, but on your operating system, libraries, and even compiler.

Ablenet347.8
WebARENA771.1
A22272.2
家サーバ1027.2
Core i52447.2

ABLENET VPSは原因がわかりませんが完敗です。ですが総合的にはいいと思います。A2は定評通りの結果です。WordPressの閲覧も今のところ期待以上に良い結果でした。WebARENAは平均的な結果です。ベンチマークから見てCPUの古さはあまり影響ないようです。stress-ngの家サーバのスコアはお話にならないレベルですがUnixBenchはかなりいい結果を出しています。4コアあるからでしょう。同じ条件にするには4で割るといいと思います。個人的に使う分には十分な性能です。

参考: Xeonベンチマーク

これを見るとAblenetのCPUスペックは悪くありません。WebARENAはXeon E312xx (E3-12xx)は2.2GHzだとかなり低い。

A2Intel Xeon E5-2620 v3 @ 2.40GHz10,009
AblenetIntel Xeon E5-2640 v2 @ 2.00GHz10,206
WebARENA1)Sandy Bridgeなので'v'がない最高値。Ivy Bridge以降が'v'がつくIntel Xeon E3-1290 @ 3.60GHz
- Intel Xeon E312xx (Sandy Bridge)
8,699

 

References   [ + ]

1. Sandy Bridgeなので'v'がない最高値。Ivy Bridge以降が'v'がつく

OverlayFS – UbuntuとDebianの違い

最近のデータセンターではSSD化しているので将来的にVPSをSSDに移行する予定ですが、HDDタイプに比べ容量が約半分程度少なくなっています。現在運用しているHDDタイプのVPSで各々lxcコンテナを立ててますがコンテナ数が増えるに従って容量も増えていきます。SSD化すると容量が足りなくなってくるのでOverlayFSを使って容量の問題を解決します。ところが一つ問題がありlxcを非特権モードだとOverlayFSが使えません。調べてみるとどうも状況が複雑なようでUbuntuは使えるがDebianでは使えません。原因はOverlayFSに当てるカーネルオプションにあります。Ubuntuではセキュリティより利便性を取り非特権モードに使えるようにしています。Debianは反対にセキュリティ優先しています。私の個人的意見ではDebianの見解のほうが正しいように思います。OverlayFSを使ったlxcコンテナの作り方は、最初にもととなるlxcコンテナを通常の方法で作り、そのコンテナをもとに新しいコンテナを作ります。

lxc-copy -n debian-base -N new-debian -B overlayfs -s

アプリケーションのインストールとシステムの更新はもとのコンテナで行います。サーバの設定関連はおのおののコンテナに保存します。