HTTPステータスに502を返却している

主題のとおり、HTTPステータスに502を返却していたので、原因を調査して対策した話。

【原因調査】

まずはネットで502ってどんな時に出てくるの?ってのを調べました。
色々見て回ったところ「負荷がかかっている」みたいなのを見て、確かに日中帯に出現していて夜間帯は全然出ていない、というところで納得しました。

が、
実は負荷ではなく、別な原因がありました。

【原因判明】

原因はTomcatのコネクションプールサイズの最大数と最小数が異なるためです。
Tomcatのコネクションプールは、使用していないコネクションを自動で開放(切断)します。
なので、使用していないコネクションを開放するタイミングでリクエストが来た時はそのまま開放しちゃうので502が発生してしまうということみたいですね。

ちなみに同様の事象なのかはApacheのエラーログを見れば分かると思います。
下記のようなエラーが出ていると思うので。

proxy: error reading status line from remote server...


ちょっと気になったのは、色々サイトを見て回ったけど、何故か「Apacheにコネクションプールを使用しない設定にしましょう」(proxy-initial-not-pooledの有効化)って対策が出てくるんですよね。

【対策】

便利な機能をOFFにしましょうというのは納得できなかったのでもっと調査した結果、コネクションプールの最大数と最小数を同数にしました。

原因が不要なコネクションを閉じてしまうというなら、常にコネクションを一定量に保つようにしておきましょうということですね。

自力で思いついた訳ではないんですけど、ここに書いた方が記憶に残りそうだし、同じことでつまずいている人がいた場合に他の対策方法を提示できるかもしれないので。(^^)

※バックエンド側に設定する方法があると思いますが、それはバージョンやフレームワークとかミドルウェアで変わってくると思うので記載はしません。

Python練習問題

Chainer Tutorialに記載されている練習問題をやってみたので、結果をメモとして残しておきます。

問2.8 (制御構文)

2以上の整数 p が素数であるとは、「どんな 2 以上 p-1 以下の整数 k に対しても p は k で割り切れない」が成り立つことを指します。素数を小さい順から列挙すると、2357111317, … となります。 チュートリアルで学んだ制御構文である if や for を用いて、2 から 100 からまでに含まれる素数を列挙して下さい。

◆回答

a = [2]
for x in list(range(3, 101)):
    if all([x % y > 0 for y in list(range(2, x))]):
        a.append(x)
print(a)

◆実行結果

[2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97]

「rails new sample_app -G」が失敗

Ruby on railsの環境を作ろうとProgateのサイトを見ながら進めてたら、
下のような感じで失敗しました。

rails aborted!
Errno::ENOENT: No such file or directory - bs_fetch:open_current_file:open
bin/rails:4:in `<main>'
(See full trace by running task with --trace)
       rails  turbo:install stimulus:install
rails aborted!
Errno::ENOENT: No such file or directory - bs_fetch:open_current_file:open
bin/rails:4:in `<main>'
(See full trace by running task with --trace)

とりあえず–traceで詳細が見れるのかな?と思ったので次のコマンドを実行。

rails new sample_app --trace
C:/Ruby30-x64/lib/ruby/gems/3.0.0/gems/railties-7.0.3.1/lib/rails/generators/rails/app/app_generator.rb:258:in ``': No such file or directory - git config init.defaultbranch (Errno::ENOENT)

なんだか「Gitが入っていないから?」と思ったのでいったんGitをインストール。
しかし、再実行しても同様の失敗。

とりあえずrailsプロジェクトを作成しているのがデスクトップだったのが気になっていたで、
「C:¥work¥ruby」を作ってそこで再実行。

なんかうまくいきました。
パスか「C:\Users\xxxxx\OneDrive\デスクトップ\ruby_lesson」だったから、
階層か日本語が原因かな・・・?

複雑な条件分岐を分かりやすく

MapやSetを使う

複数のステータスのいずれかに一致するか、という条件判定をひとつずつ実装するのは非効率だし、分かりやすさや見易さを犠牲にすると思います。
MapやSetに存在するかを判定することで見やすく、分かりやすくなるのではないかと。

例)

public class Test {

	private static final Set<String> GOODS_SET;
	static {
		HashSet<String> map = new HashSet<String>();
		map.add("りんご");
		map.add("ぶどう");
		map.add("なし");
		map.add("もも");
		map.add("みかん");
		GOODS_SET = Collections.unmodifiableSet(map);
	}

	public static void main(String[] args) {

		if (GOODS_SET.contains("りんご")) {
			System.out.println("商品に存在します。");
		} else {
			System.out.println("商品に存在しません。");
		}

	}

}

条件分岐の名前で判定するので、分かりやすいと思います。
1点だけ難点を挙げるなら、テストで条件を網羅できたかが確認できないので、条件に含めているものが正しいのかをレビューできちんと確認する必要があるところです。

本番環境と検証環境を区別させたい

目的・意図

検証環境を利用していて、誤って本番環境にアクセスしてしまわないかは心配ですよね。
誤って本番環境にアクセスしてゴミデータを登録したりとか、ありそうですよね。

提案

Chromeの設定でサイトごとに画像を表示させない設定ができるので、その設定を試してみてはいかがでしょうか?

右上の3点リーダーから「設定」
→左のメニューから「プライバシーとセキュリティ」
→「サイトの設定」
→「画像」
→「画像の表示を許可しないサイト」に対象のURLを追加。

最近では、画像を全く使っていないというようなサイトは少ないと思いますので、
「画像が表示されない→本番環境だ」となるのではないでしょうか。

昔、担当したことのあるシステムでは検証環境だけ背景色が変わっていたりしていましたが、
これならコードをいじらなくて良いので、お手軽かなと思います。

タイトル画面から本編への遷移

参考サイト

1.<https://gametukurikata.com/ui/startbuttonui>

2.<https://dianxnao.com/%E3%83%9C%E3%82%BF%E3%83%B3%E3%82%AF%E3%83%AA%E3%83%83%E3%82%AF%E3%81%A7%E3%82%B7%E3%83%BC%E3%83%B3%E9%96%93%E3%82%92%E9%81%B7%E7%A7%BB%EF%BC%88%E7%A7%BB%E5%8B%95%EF%BC%89%E3%81%99%E3%82%8B/>

いちおう出来た!

STARTボタンはマウスが重なると少し拡大して赤色になり、押すと青色になって本編が起動します。(本編はキャラを表示しているだけ)
ENDボタンは、処理の終了です。

上の方に記載した参考サイトは、項番1がアニメーションの設定の理解につながりました。
項番2は、画像を多くしてくれていたので、どこにドラッグするのかが分かりやすかったです。

田舎から都会へ出る人へ

時期外れだけど
ひとりになる前に知っておいた方が、
あるいは、聞いておいた方が良かったのではというポイント。

保険関連

貯蓄があって、危険の少ない仕事なら、保険料の高い保険は不要。
通勤が電車のシステムエンジニアなら、とりあえず貯蓄を500万くらい貯めて、
あとは都民共催の月千円のプランでよいかと思います。

地方で自動車通勤とかなら別途、車関連の保険には入った方がいいかもしれませんね。

引っ越し関連

大手不動産仲介会社とかに全部任せると、逆に高くついたりする。
必要ないものは断って、お安い会社に任せるのも検討した方が良いと思います。
たとえば不動産の紹介だけやってもらって、引っ越しは安い業者に任せるとか。

今では少なくなったかもしれませんが、社会人1年目なら寮のある会社はオススメ。
変な先輩とかいればご愁傷様って感じですが、一緒に過ごすことで同期の仲が深まることもあります。

キッチン回り

シンクの周りは台拭きを置いておき、使用後は水をかならず拭うこと!
ステンレスでも錆びは移ります。
金属の缶とか絶対置かないでください。
使った後は水気をきちんと拭うこと!(大事なことなので(ry )

換気扇は100均とかでフィルターを購入して、そもそも汚れないようにする。
また、風呂場に防カビ燻煙材を焚いて、なるべくカビが発生しないように。
できればルンバが動きやすい床の物件だと掃除も自動化できますね。
時間は有限なので自動化できるところは自動化して、
汚れにくい環境を作りましょう。

フライパンはテフロン加工されているか、鉄鍋、アルミパンなど、
きちんと特性を理解して使用、メンテナンスしましょう。
特にメンテナンス方法を理解することは大事。
この前、オムライスを作るときは強火が良いと言っていたテレビがあったけど、
テフロンなら死んだなと。

目覚まし

太陽電池が組み込まれた目覚まし時計がオススメです。
そういえば、うちのCITIZENの時計は5年くらい電池を変えてないはず。。。

こたつ・扇風機

冬の電力消費を抑えたいならコタツがオススメ。
エアコンは暖房も冷房もお金がかかります。
お金に余裕がなければこたつや扇風機を買った方が安上がりの場合があるはずです。
特に、物件に備え付けのエアコンは古い場合が多いので。

食生活

節約するならお安いスーパーの近く。
ある程度の日数分を購入して、お休みの日に作り置きするのがベター。
たとえば、オクラとかほうれんそう、小松菜などをゆでて麵つゆ、鰹節に漬けるとか。
毎日作るのは料理好きでも大変です。

ひとりだと購入する食材が偏ったりするので、
一日分のビタミンをサプリなどで不足分は補いましょう。

ごはんは基本的には常温保存。
温めなおす前提なら、冷蔵or冷凍。
冷凍の場合はあたためコース、冷蔵の場合は500wで1分20秒程度。
冷ごはんにはレジスタントスターチになってるらしいので、
カロリーを気にしているなら冷ごはんがオススメ。
できれば麦ごはん。

食材ごとに書きたいことがあるけど、それは別で書きます。

フィットネス

ジムよりもSwitchのフィットボクシングがおすすめ。
家から出ずに運動できるし、汗をかいたら家だからすぐにお風呂に入れます。
Switchはゲームではなく、フィットネスマシンです。
ただし、何事もやりすぎは禁物なので、ほどほどにしましょう。

体重計よりも体組成計がオススメです。
とりあえずは、体重と体脂肪率が分かるやつです。
体重と体脂肪率が分かれば脂肪の重量が分かるので、脂肪の重量を減らすことを目標にしましょう。

きちんと運動していなかったときは豆類を食べてもイソフラボン効果が感じれませんでしたが、
ちゃんと運動をするようになってからは、イソフラボン効果が感じれるようになりました。
(肌にハリが出てきた気がする。あと、カサカサしにくくなったかな?)

街中で声をかけてくる人

基本的には無視してください。冷たいのではなく、自衛です。
悪い人間や自分のことしか考えていない人間が多いです。
こちらも自分優先で生きましょう。

そもそも、街中で声をかけてくる人が困っていることは、ほぼありません。(経験上)
本当に困っていたら、常識的な人は交番行きます。

声掛けの例(実例):
・外人から、恵まれない人にという話で千円の寄付を求められた。
・〇〇に行きたい→乗る電車を教える→自信ないのでそこまで連れてって
・今、お時間いただけませんか。(多分、どこかの営業の新人研修)
・ちょっと教えてほしいんですけど→今急いでるんで→タクシー乗り場どこですか?
 →あっち!(ほんとに急いでたけど、ほんとに知らないようなので指を指しながら)
・アンケートにご協力いただけませんか。
 →〇〇保険なんですけど、ご住所はどちらですか。
 →え、嫌なんだけど。(はっきり言いましょう)
・○○テレビの該当インタビューなんですけど。
 (今の時代、インタビューで炎上することもありますのでリスクは避けましょう)

そのほか、何かアップデートあれば追記します。

Minecraftサーバーを立ち上げようとした

minecraftサーバーを立ち上げようとしてみました。
結論から言うと、メモリ不足で失敗(^^;

今のサーバーのメモリが512MBで、やっぱりスペック的には1GBは必要そうです。

使用したのはpaperMCという軽量化したminecraftサーバーソフトで、
ver1.17からJava16になったようです。
Java16(openJdk)のインストールは、↓のコマンドでやりました。

yum install -y java-latest-openjdk.x86_64 which

やる前に↓のコマンドで、存在することを確認してください。

yum search openjdk

ちなみに、何回もリトライしましたが、ワールドの生成が何回やってもダメでした。
当然それ以降は確認できていないので、他のエラーが出てきてもちょっと分かりません。
ポートあたりがつまづきそうですけど。
※スペックを上げてまで立ち上げる意思はないです・・・。


以下、コマンドのメモです。

--グループ作成
groupadd minecraft

--ユーザ作成(パスワードは後で設定)
useradd -g minecraft minecraft

--ユーザ切り替え
su minecraft_username

--CD
/home/minecraft_username

--ディレクトリ作成
mkdir minecraft_server

--CD
cd minecraft_server/

--jarダウンロード
curl -LO https://papermc.io/api/v2/projects/paper/versions/1.17.1/builds/139/downloads/paper-1.17.1-139.jar

--起動(1回目はeula.txtの許諾が必要)
java -Xmx1024M -Xms1024M -jar paper-1.17.1-139.jar

サーバーのメモリは512MBだけど、1024MBでも動きました。
OutObMemoryにはなりませんでしたので、実質1024MBでは動いていなかったようです。
まぁそりゃそうか。

長く誰かと遊ぶなら専用サーバーを契約してもいいですね。

2021年07月25日 近況

オリンピック

世間はコロナで大変ですがオリンピックが始まりましたね。
テレビ欄にたくさん中継が出てました。
正直あまり賛成派ではありませんでしたが、せっかくやるなら楽しんでほしいですね!

ログイン失敗

このWordPressを入れているサーバーにはSSH接続でTeraTermからログインできるようにしていたんですけど、一昨日、ログインできなくなってました。
パスフレーズも変えた覚えがないし、ファイルも同じなんだけど・・・?
まぁ結論から言うとExcelのセルをコピーして貼り付けていたので、
改行文字がパスフレーズに含まれちゃってたんですよね。
ひさびさにログインしたから忘れてました!

お仕事

1年半くらいテレワークです。
電車に乗らなくていいって最高ですね。
来週は離任手続きで久々の出社があるので、ちょっと面倒です。

報酬はしばらく今のままですかね。
でも残業もあまりなく、ほどほどの報酬もいただけてテレワークなので、
今くらいがちょうどいいのかもしれません。

あとは性能改善系を少しずつ進めていて、PLAN_HASH_VALUEとか、
実行計画の見方とかなんとなく分かってきました。

dTV

dTVに加入。
「デッドプール」とか「ワカコ酒」とか観ました。
ワカコ酒とか孤独のグルメみたいなのが好きなのかも。
「おいしい給食」の3話はぜひ見てほしいので、リクエストしておきました笑

要件定義

要件定義でデザインとJavaScriptは専用部隊で作ることになっているんですけど、
出てくる成果物の品質がイマイチなことが多々あり。
やっぱり要件定義の時に「どの項目がどんな属性でどんな動き方をするのか」を共有する必要がある。
フォーマットに追加したので、次からはもうちょっと品質が上がればいいな。

ゲーム

モンハンは最近やってないかも。
Apexをやってることが多くなりました。
普通に面白いけれど、操作にちょこっとストレスを感じるので。
まぁでもカンストと勲章集めはやりたいし、
これからもアップデートはあるので期待してます。

テレビ

今期の中で個人的に面白いかも?と思ってる番組です。
・迷宮ブラックカンパニー
・RE-MAIN
・ピーチボーイリバーサイド
・孤独のグルメSeason9
・ひねくれ女のボッチ飯

料理

ナスを揚げ焼きして、めんつゆ、唐辛子、酢、ゴマ油を入れた出汁に漬けるとうまい。
酢が入ってるのである程度は日持ちするのでは。
できれば一度、火を通した方がベターと思われます。
ナス、ホウレンソウ、オクラとかを入れておけば副菜によさげ。

この前、ニラ玉を作ったんですけど、うまくできました。
・卵にちょっと出汁を入れる。
・ニラは2cm幅くらい。
・蓋をして蒸し焼きにする。
・ウェイパーを水溶き片栗粉でトロミつけて餡にする。

酢豚を作ったとき、消費期限前だったせいかちょっと豚が臭かったのと
下味をつけてなかったのでイマイチでした。
ちゃんと下処理をした方が絶対おいしかったのに・・・!

株主優待

オリックスのふるさと優待が届きました。
信州のハムにしたので、ウィンナー3パック、ハム2パックでおいしそうです。
ライザップも株を持ってるんですけど、
めぼしい商品は品切れになってたので使えないという・・・。

Pythonでクローリング&スクレイピングのお勉強

1.経緯

本屋でPythonの本を眺めてふと、勉強してみようと思ったので。

2.購入

というわけで、そのままの流れで書籍を購入。
書籍代はもちろん、教育費。

3.まずは実行まで

なにやらVirtualBoxなるものでWindowsにLinuxの仮想環境を作成し、仮想環境でPythonを実行するようだ。

本に記載されているバージョンでインストールして、なんとかHello, Python!を出すところまで出来ました。

終わったらVirtualBoxで起動しているLinuxを保存&シャットダウン!

毎回起動&シャットダウンはちょっと面倒かも。。。