ぽんぽんぽぽぽん

”ぽん”が色々書きます。(ITのことや、ソシャゲ、スロットのこととかw...etc)

MaxRequestPerChildは変更したほうがいいよ!

こんにちは。ぽんです。

 

 

早速ですが昨日、ウチのサービスのサーバーが落ちました。

 

大人の数学勉強中に鬼電がかかってきて、中断して調査と対応。

(講師の方すみませんm(_ _)m)

 

 

なんかメモリがswapも含めて使いきっていて強制ダウン。

(おそらくOOMKiller発動)

 

 

その日はとりあえず復旧させただけで、落ちないことを祈りつつ就寝

 

今日になって今後の対策なんとかしなきゃなーと思って調査を開始したところ、

3日ぐらい前からやたらとふえてるじゃありませんか!

 

そういえばあの時あれリリースしたなぁ。。。

あれのせいかなぁ。。。

うーん。。。

この増え方なんかおかしいぞー。。。

 

muninでメモリの使用量の推移をみてみるとなんかメモリリークしてるっぽい。

でもPHP基本無いはずなんだけどなぁ。バッチ処理ならわかるけど。

 

とりあえずtopで見てみると、

 

!!!!!!!

 

!!!!!!!!!!!!!!

 

httpdのメモリ使用量が1G!!!!?????

 

根本はなぜかはよくわかってない。

 

とりあえずこれを減らす方法を見つけねば!

 

 

検索すると

MaxRequestPerChildの値が4000なのが悪いっぽい。(httpd.confのprefork部分の設定)

 

そんなに使いまわさんでもいいでしょ!と思ったのでとりあえず500に変更

```

service httpd graceful

```

あれ1GBのプロセス消えね。

 

```

service httpd restart

```

消えた。

 

 

そして

 

 

 

安定した。

 

 

2016/06/14 追記

原因はここではなかった!

MaxRequestPerChildの値はそのままだけど、

MJ12Botなるものがやたらとアクセスしまくりが原因だった。

ということでrobots.txtでブロック 

PHPで統計系関数を使う

こんにちは。ぽんです。

今日は、PHPで統計関数が必要だったので入れてみたことのメモ

最近多いですよねー。統計的な話。

↓ちなみにコレ↓

PHP: 統計 関数 - Manual

peclで入れられるようなので、

pecl install stats

とやる。

魚!めっちゃおこられた!

https://pecl.php.net/package/stats

本家見ると、どうやら最新版はPHP7以降らしい。

入っているPHPは5.3なのでそれでも対応している1.0.3をインストールする。

pecl install stats-1.0.3

extension=stats.soをphp.iniに追加してhttpd再起動して完了!!

●●●●→●●●...にしたいときって無い??

こんにちは。ぽんです。

よくサイト作ってると、最新の日記をトップページに5件表示するとかが発生する

そんなとき、

本文を全部出すなんてことは当然しないわけで、、

テキストテキストテキストテキスト・・・とか

テキストテキストテキストテキスト...とか

したりする。

そんなときに便利な関数があったので備忘も含めて。

mb_strimwidth

PHP: mb_strimwidth - Manual

鬼便利!

Let's Encrypt導入してみた(AWS)

こんにちは。ぽんです。

最近、セブンナイツにハマってます。

ただ、、、ガチャからセブンナイツでなさすぎて若干萎えてます。

さて、Let's Encryptについてです。

2016年4月12日に正式サービスが開始しましたね。

↓本家ホームページ↓

Let's Encrypt 総合ポータル

無料でSSLが導入(かつ自動更新される!?)ということで自分のサービスが乗っているサーバー(AWS)に入れてみました。

基本的にはLet's Encrypt の使い方 - Let's Encrypt 総合ポータルの通りにやっていけば設定完了ですが、

一部詰まったのでそれも含めて書いていきます。

導入手順

① Let's Encryptのクライアントをダウンロード

サーバーに入って、適当なところで以下コマンド実行

※rootいらないよ!

$ git clone https://github.com/letsencrypt/letsencrypt

② テスト実行+必要なモジュールをインストール

cd  letsencrypt
sudo ./letsencrypt-auto --help --debug

Pythonとか、必要なものが自動でインストールされます。 ※ AWSの場合--debugをつけないとダメ

③ 証明書取得

sudo ./letsencrypt-auto certonly -a standalone -d [SSL化したいドメイン]

※ 変な画面が立ち上がりますが、メールアドレスとか入れて終了

ここで!?なんかエラーが起きるので、見てみると、

80番ポートがListen状態だと人相がうまくいかないらしい。

ということで一回apache止める

sudo service httpd stop

もう一回実行

sudo ./letsencrypt-auto certonly -a standalone -d [SSL化したいドメイン]

あれ。。。うまくいかん。。。

AWSにログインしてセキュリティグループのインバウンドをチェック。

443うけいれてないっすね〜。見事に拒否ってますね〜。

はい、許可ポート追加。

もう一回実行

sudo ./letsencrypt-auto certonly -a standalone -d [SSL化したいドメイン]

はいオッケー。

ここでapache起動

sudo service httpd start

これで/ect/letsencrypt内に証明書ができているはず!

④ 証明書設定

あとはいつも通りSSLの設定をしてあげたらよい。

※注意点は、apache 2.4.8 以降(またはnginx)、apache 2.4.8 未満で使うファイルが違うってこと

apache >= 2.4.8

サーバ証明書と中間証明書が結合されたファイル

SSLCertificateFileに指定

/etc/letsencrypt/live/ドメイン/fullchain.pem

秘密鍵

SSLCertificateKeyFileに指定

/etc/letsencrypt/live/ドメイン/privkey.pem

apache < 2.4.8

サーバー証明書

SSLCertificateFileに指定

/etc/letsencrypt/live/ドメイン/cert.pem

中間証明書

SSLCertificateChainFileに指定

/etc/letsencrypt/live/ドメイン/chain.pem

秘密鍵

SSLCertificateKeyFileに指定

/etc/letsencrypt/live/ドメイン/privkey.pem

オッケー!ブラウザから確認して終了。

期間が3ヶ月になってるなー。自動化はまた確認

Qdmail + Qdsmtp + Gmailの送信不具合に関して

● 現象

3/30 AM(6:00より前ぐらい)からメール送信が不可となった。

調べてみるとGoogle側のSMTP設定の仕様変更があったらしい。

不可となる条件は、QdmailというPHPのライブラリを利用していて、

smtp先ホストがssl://smtp.gmail.comと指定されている場合。

gmailアカウント(SMTPサーバー)への接続に失敗するようになっており、

一切メールが送信されない。

● 暫定の対応

↓ 以下参考 ↓

https://teratail.com/questions/31065

https://productforums.google.com/forum/#!topic/gmail-ja/djNLitD1aHQ

Googleプロダクトフォーラムにあがっていた内容で

とりあえずの対応はできたが、そもそもQdmailは開発が止まっているので

PHPMailerにコンポーネントを変更する対応が必要。

クロノドラゴン始めました

こんにちは。ぽんです。

 
なんか最近やってるゲームも飽きたなぁ、課金不要で面白そうなゲームないかなぁって探してたら
 
見つけました!
 
 
その名も、「クロノドラゴン」!
 
なんとなく厨二心をくすぐられるネーミングじゃないですか!笑
 
ジャンルもアクションMMO的な感じらしくどうやら私好み。
  
初めて4日ぐらい経っているのですが、
これから攻略的なメモ残してこうと思うので現状からアップしてこうと思います。
 
 
このクロノドラゴン、基本的にはクエストこなしてレベル上げというのは他のソシャゲと同じ。キャラと装備(武器と防具)のレベルをあげて、装備を進化させて強い敵に挑む!そんな流れです。
 
ギルドやパーティー、 レイドなどやれることも割と豊富です。
 
使えるキャラが3種類あって、
ウォーリア
アーチャー
ウィザード
から自分が好きなものを最初に選びます。
※あとで全部つかえるようになります。
 
ホーム画面
f:id:ponchikutanuki:20151123232007p:image
 
私はウォーリアを最初に選択してひたすらウォーリア1本でプレイしてます。
現時点最大レベルが70なのですが、60までは結構すんなり上がりました。
 
リセマラでゲットした武器はこちら↓
f:id:ponchikutanuki:20151123232844p:image
色々見ると全属性が強い星5がいいとあったので10回目ぐらいで「君に決めた!」した。
 
装備の星は★1〜★6まであって、ガチャからは★3〜★5がでます。
ちなみに★5はなんとなく3%ぐらいじゃないかと。。。
本当に出ない。
 
装備画面↓
f:id:ponchikutanuki:20151123232719p:image
武器と防具とアクセサリーが装備できます。
防具もガチャで引けるのですが、ルビーを使うだけ無駄なので武器だけ引いてます。
 
 
とりあえず今回は開始の報告でした!
詳しいことや攻略記事はまた次回。
 

PHPからruby on railsに環境を切り替えてみる(共存)

こんにちは。ぽんです。

やっぱりruby!?ってことで今までずっとPHPを使って開発をしてきましたが、

本格的にrailsに乗り換えようと決心した。

本格的に導入したことがなかったので今更ながらrailsのインストールまでをメモ。

OSはvagrant上のCentOS

WebSVはnginxにしたいところだけどapache

RDBMSmysql

で既にPHPが乗っている環境にrailsのインストールまでして画面表示までを行う。

rubyをインストールしないと話にならないのでrbenvを利用してrubyをインストールする

① rbenvのインストール

$ cd
$ git clone https://github.com/sstephenson/rbenv.git ~/.rbenv

次に環境変数の設定

$ echo 'export PATH=$HOME/.rbenv/bin:$PATH' >> ~/.bash_profile
$ echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
$ exec $SHELL -l

$ rbenv -v
rbenv 0.4.0-183-gc18a3f9

rbenvのインストール完了!

ただ、rbenvだけではrubyのインストールが簡単に行えないためruby-buildをインストールする必要がある

ruby-buildのインストール

$ cd
$ git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build

次にインストールしたいrubyを確認

$rbenv install --list
Available versions:
  1.8.6-p383
  1.8.6-p420
  1.8.7-p249
  1.8.7-p302
  1.8.7-p334
  1.8.7-p352
  1.8.7-p357
  1.8.7-p358
  1.8.7-p370
  1.8.7-p371
  1.8.7-p374

↑ こんな感じでいっぱいでてくる。 こっから選んでコマンドうつだけでインストールは完了!なんて便利!

rubyのインストール

とりあえず今回は2.2.0をインストール

$ rbenv install 2.2.0

結構時間かかるので、コーヒーでも飲みながらネットサーフィン。やべ。まとめおもしれ

お、気付いたら終わってた!

ということで使用するrubyのバージョンを指定する

$ rbenv rehash
$ rbenv global 2.2.0
$ ruby -v
ruby 2.2.0p0 (2014-12-25 revision 49005) [x86_64-linux]

こう表示されれば問題無くインストール完了

railsのインストール!

$ gem install rails

はいエラー

nokogiriがうんたらかんたらと怒られる。

調べた結果これでいけるらしい。

$ gem install nokogiri -- --use-system-libraries

もう一度

gem install rails

ほほぉ!入った!

$ rbenv exec rails -v
Rails 4.2.4

railsプロジェクトの作成

$ cd [railsプロジェクトを作成したいディレクトリ]
$ rails new example -d mysql

MySQLを利用のため あ、なんか失敗した。。

mysql2のgem installでこけてる。。

ふむ。mysql-develが足りないと。ということで

$ sudo yum install mysql-devel

$ gem install mysql2

よし!!!!そしてはい、もういちど〜

$ rails new example -d mysql

おっけ!とおった!

exampleというプロジェクトのディレクトリができているはず

Rails環境をApache上で動かすにはPhusion Passengerというのが必要らしい

⑥ gemでPassengerをインストール

$ gem install passenger
Fetching: passenger-5.0.21.gem (100%)
Building native extensions.  This could take a while...
Successfully installed passenger-5.0.21
Parsing documentation for passenger-5.0.21
unable to convert "\x88" from ASCII-8BIT to UTF-8 for src/cxx_supportlib/vendor-modified/boost/thread/future.hpp, skipping
unable to convert "\x97" from ASCII-8BIT to UTF-8 for src/cxx_supportlib/vendor-modified/boost/utility/declval.hpp, skipping
Installing ri documentation for passenger-5.0.21
Done installing documentation for passenger after 52 seconds
1 gem installed

⑦ passenger-install-apache2-moduleを実行

$ cd .rbenv/versions/2.2.0/bin
$ ./passenger-install-apache2-module

--------------------------------------------

Installation instructions for required software

 * To install Curl development headers with SSL support:
   Please install it with yum install libcurl-devel

 * To install Apache 2 development headers:
   Please install it with yum install httpd-devel

 * To install Apache Portable Runtime (APR) development headers:
   Please install it with yum install apr-devel

 * To install Apache Portable Runtime Utility (APU) development headers:
   Please install it with yum install apr-util-devel

If the aforementioned instructions didn't solve your problem, then please take
a look at our documentation for troubleshooting tips:

  https://www.phusionpassenger.com/library/install/apache/
  https://www.phusionpassenger.com/library/admin/apache/troubleshooting/

ほいエラー。言われたとおりにインストール

もういっちょ

$ ./passenger-install-apache2-module

--------------------------------------------
Almost there!

Please edit your Apache configuration file, and add these lines:

   LoadModule passenger_module /home/marisa/.rbenv/versions/2.2.0/lib/ruby/gems/2.2.0/gems/passenger-5.0.21/buildout/apache2/mod_passenger.so
   <IfModule mod_passenger.c>
     PassengerRoot /home/marisa/.rbenv/versions/2.2.0/lib/ruby/gems/2.2.0/gems/passenger-5.0.21
     PassengerDefaultRuby /home/marisa/.rbenv/versions/2.2.0/bin/ruby
   </IfModule>

After you restart Apache, you are ready to deploy any number of web
applications on Apache, with a minimum amount of configuration!

Press ENTER when you are done editing.


--------------------------------------------

終わったっぽい。

↑ これをapacheの設定ファイルに貼れと命令されたので社畜ばりにいうことを聞いてみる。

publicディレクトリにとりあえずindex.htmlをおいて接続テストしてみる。

うごいた!!!!!

よし、こっからガッツリやるか。