makoto_fujimotoのblog

株式会社進角
代表 藤本信のブログです
どうぞよろしくお願いします

apt-getでインストールされるVLC(現時点2.2.6)はハードウェアアクセラレーションが利用出来ず、まともに動画再生が出来ないのでソースからコンパイルをした際のメモ。

# apt-get update

$ mkdir work
$ cd work
$ wget http://download.videolan.org/vlc/2.2.6/vlc-2.2.6.tar.xz
$ tar -xJf vlc-2.2.6.tar.xz
$ cd vlc-2.2.6
$ ./bootstrap(失敗する)
# apt-get install gettext
# apt-get install automake

$ ./bootstrap(また失敗する)
てかいろいろ足りないらしいので以下参照
https://www.raspberrypi.org/forums/viewtopic.php?t=59814
# apt-get install ...
 
$ ./bootstrap

$ CFLAGS="-I/opt/vc/include/ -I/opt/vc/include/interface/vcos/pthreads -I/opt/vc/include/interface/vmcs_host/linux -I/opt/vc/include/interface/mmal -I/opt/vc/include/interface/vchiq_arm -I/opt/vc/include/IL -I/opt/vc/include/GLES2 -mfloat-abi=hard -mcpu=cortex-a7 -mfpu=neon-vfpv4" CXXFLAGS="-I/opt/vc/include/ -I/opt/vc/include/interface/vcos/pthreads -I/opt/vc/include/interface/vmcs_host/linux -I/opt/vc/include/interface/mmal -I/opt/vc/include/interface/vchiq_arm -I/opt/vc/include/IL -mfloat-abi=hard -I/opt/vc/include/GLES2 -mcpu=cortex-a7 -mfpu=neon-vfpv4" LDFLAGS="-L/opt/vc/lib"

$ ./configure --prefix=/usr --enable-omxil --enable-omxil-vout --enable-rpi-omxil --disable-mmal-codec --disable-mmal-vout --enable-gles2


$ make -j3
qt4関連でエラー。。。
# apt-get install qt4-dev-tools

$ make -j3
他の事でもしながらじっくり待ちましょう...

# make install
他の事でもしながらじっくり待ちましょう...

上記フォーラムのIssueに
---------------
After starting VLC for the first time, change the following options:
Settings, simple, Audio: make sure, ALSA and bcm2835 are selected
Settings, simple, Video, output: select "OpenMAX IL video output"
---------------
とあるので

設定>ビデオ>出力>OpenMAX IL video outputを選択すればハードウェアアクセラレーションが利用できます。

とりあえずフルハイ30fpsのmp4動画はomxplayerとそん色なくスムースに再生されるようになりました。

お問合せフォームや独自のメール配信システムからメールを送った場合、相手に届かなかったり迷惑メールに振り分けられてしまうことがたまにあります。この様な不具合を回避するためのチェックポイントをまとめました。

  1. Fromのドメインが存在していて返信可能か
  2. メールヘッダにエンベロープFrom(Return-path)が正しく記述されているか
  3. エンベロープFromに記述したサーバが存在しているか
  4. そのドメインのDNSにMXレコードが記述されているか
  5. そのMXレコードに記述されているMTA(メールサーバ)にメールが到達可能か
  6. ドメインのDNSにSPFレコード(送信サーバのIPアドレスやネットワーク)が記述されているか
  7. 送信サーバのIPアドレスに逆引きDNSが定義されているか
  8. MTA(メールサーバ)の正引きDNSと逆引きDNSが一致しているか
  9. 送信サーバのIPアドレスがブラックリスト(Spamhaus等)に登録されていないか
  10. 送信サーバのIPアドレスにプライベートアドレスを使用していないか
  11. メール形式にHTMLやjavascriptを使用していないか
  12. メール形式にマルチパート(multipart/alternative)を使用していないか
  13. メール本文にリンクを多用していないか
  14. メール本文にSPAMによくあるキーワードが使用されていないか
  15. 共有サーバを使用していてIPアドレスが行儀の悪い他サイトと共通になっていないか

ステージングと本番系に分けた構成のWordpressサイトの同期手段としてwordmoveを使用していますが、しばらく運用していたところ、Webアクセスとは無関係にサーバ負荷が異常上昇する現象が発生しました。wordmoveの設定についてはこちらを参照。

accsess_logやtopコマンドで確認したところ、同期を実行してから間もなくしてサーバ自身からのHEADメソッドによるローカルリクエスト起きていることが判明し、その数なんと23万件以上ありました。ロードアベレージも20を超えサーバがパンクする事態となりまして、原因が分かるまでは対処療法として負荷を監視してhttpdを自動的に再起動するなどの応急処置でしのいでいました。

現象がpingバック機能に似ていたことからWP Total Hacksを始めいくつかのプラグインを試して禁止するように設定しましたが効果はありませんでした。

お手上げです。。

そこで、一時的にすべてのクエリーログを吐き出すように設定して調査したところ、負荷上昇時に気になるSQLが発行されていることが分かりました。それが以下のSQLです。
SELECT ID, post_content, meta_id FROM wp_posts, wp_postmeta WHERE wp_posts.ID = wp_postmeta.post_id AND wp_postmeta.meta_key = '_pingme' LIMIT 1
SELECT * FROM wp_postmeta WHERE meta_id = 22663
DELETE FROM `wp_postmeta` WHERE `meta_id` = 22663
SELECT pinged FROM wp_posts WHERE ID = 874
SELECT   wp_posts.* FROM wp_posts  WHERE 1=1  AND wp_posts.post_name = 'gaobijo-title_fuku-png' AND wp_posts.post_type = 'post'  ORDER BY wp_posts.post_date DESC
SELECT   wp_posts.* FROM wp_posts  WHERE 1=1  AND wp_posts.post_name = 'gaobijo-title_fuku-png' AND wp_posts.post_type = 'post'  ORDER BY wp_posts.post_date DESC
SELECT   wp_posts.* FROM wp_posts  WHERE 1=1  AND wp_posts.post_name = 'kumaayaka04-png' AND wp_posts.post_type = 'post'  ORDER BY wp_posts.post_date DESC

詳しくは分析していませんが、pingバックを禁止しているにも関わらずページ内のリンクをすべてパースして何か処理を行っているようです。そしてついにこの処理を行っていると思われるコードを発見しました。それがdo_all_pings()という関数です。この関数はwp-cron.phpという疑似バッチのトリガーから呼び出されるwp-include/default-filters.phpにてadd_actionでフックされています。同期の実行からしばらく経過してから異常が発生する現象ともつじつまが合います。
add_action( 'do_pings',    'do_all_pings',    10, 1 );

この部分をコメントアウトすることでやっと不可解な自ホストに対してのHEAD呼出し現象が止まりました。なおdefault-filters.phpはパッケージのアップデートなどにより更新されてしまうので、add_actionを無効化するスクリプトをプラグイン化して設置する方が良いそうです。以下サンプルphpです。

<?php
/*
Plugin Name: No Do Pings
Plugin URI:
Description: Remove Actions and Filters
Author: Makoto Fujimoto
Version: 1.00
Author URI:
*/
remove_action( 'do_pings', 'do_all_pings' );
?>
この様なPHPプログラムをwp-content/plugins/以下に設置して管理画面で有効化してください。

このページのトップヘ