Upgrade to PRO for Only $50/Year—Limited-Time Offer! 🔥
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Seleniumでイキってたらサーバを絞め落としかけてた話
Search
kenFuji
June 08, 2022
Programming
0
710
Seleniumでイキってたらサーバを絞め落としかけてた話
2022/06/08に開催された「自動化大好きエンジニアLT会 - vol.7」にて発表したときの資料です。
https://rakus.connpass.com/event/245663/
kenFuji
June 08, 2022
Tweet
Share
Other Decks in Programming
See All in Programming
AIエージェントを活かすPM術 AI駆動開発の現場から
gyuta
0
210
Combinatorial Interview Problems with Backtracking Solutions - From Imperative Procedural Programming to Declarative Functional Programming - Part 1
philipschwarz
PRO
0
120
Full-Cycle Reactivity in Angular: SignalStore mit Signal Forms und Resources
manfredsteyer
PRO
0
170
宅宅自以為的浪漫:跟 AI 一起為自己辦的研討會寫一個售票系統
eddie
0
460
これだけで丸わかり!LangChain v1.0 アップデートまとめ
os1ma
6
1.3k
データファイルをAWSのDWHサービスに格納する / 20251115jawsug-tochigi
kasacchiful
2
110
connect-python: convenient protobuf RPC for Python
anuraaga
0
350
TVerのWeb内製化 - 開発スピードと品質を両立させるまでの道のり
techtver
PRO
3
1.3k
AIコーディングエージェント(Gemini)
kondai24
0
110
tparseでgo testの出力を見やすくする
utgwkk
1
120
しっかり学ぶ java.lang.*
nagise
1
480
WebRTC と Rust と8K 60fps
tnoho
2
1.9k
Featured
See All Featured
Stop Working from a Prison Cell
hatefulcrawdad
273
21k
Java REST API Framework Comparison - PWX 2021
mraible
34
9k
Statistics for Hackers
jakevdp
799
230k
Scaling GitHub
holman
464
140k
Writing Fast Ruby
sferik
630
62k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
37
2.6k
Keith and Marios Guide to Fast Websites
keithpitt
413
23k
Speed Design
sergeychernyshev
33
1.3k
How GitHub (no longer) Works
holman
316
140k
Site-Speed That Sticks
csswizardry
13
990
The Language of Interfaces
destraynor
162
25k
Docker and Python
trallard
46
3.7k
Transcript
Seleniumでイキってたら サーバを絞め落としかけてた話 2022 06/08 自動化LT#7
自己紹介 • 名前 ◦ Ken Fujita • 職業 ◦ ネットワークエンジニア(今年で新卒3年目)
• やってること ◦ NW保守、ツール作成、営業・窓口サポートなど ◦ CRE? • 最近のマイブーム ◦ PS5 ◦ 映画 ◦ そば
なにをしたか • 手作業が多かった業務を自動化したよ • ブラウザ操作が主だったのでSeleniumで自動化できたよ • いけたと思ったらサーバのリソースを食いつぶしていたよ
どんな業務か • メンテ情報をカレンダーアプリに登録する作業
Seleniumで自動化した • メールコピー~登録までを自動化 • メール送信できるWebフォームも作成 • フォーマットが統一されより自動化しやすくなった
フロー図 自動化ツール (Selenium) AP Server 窓口 関係者 chrome (webdriver)
自動化完全に理解した
自動化完全に理解した?
ある日 • 上司からチャットが飛ぶ Pythonスクリプト動かしたら “Error: Too many open files” って出てきたんだけど心当たりある?
ある日 • 上司からチャットが飛ぶ Pythonスクリプト動かしたら “Error: Too many open files” って出てきたんだけど心当たりある?
→ 嫌な予感がしたので調査した
調査の結果 • エラー文でググったところ、ファイルディスクリプタ上限に引っかかった? ◦ https://e-words.jp/w/%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%83%87%E3%82% A3%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%97%E3%82%BF.html • 設定変更するものの状況変わらず ◦ “Too
many open files”は出続ける ◦ スクリプト自体は正常に動作する • 何だか知らんがとにかくよし! /etc/security/limits.conf * soft nofile 65536 * hard nofile 65536 # ulimit -n https://akishin.hatenablog.jp/entry/20130213/13 60711554
後日 • 上司からチャットが飛ぶ “Error: Too many open files” ↑の原因わかりました
後日 • 上司からチャットが飛ぶ “Error: Too many open files” ↑の原因わかりました chromeのプロセスがサーバ内に数百個残
り続けていたのが原因でした
None
原因 • コード例
原因 • コード例 • 例外処理がなく エラー発生時にchrome プロセスが残り続ける • デバッグしながら進めた ので数が膨れ上がった
対策 • エラーハンドリングを行う • with構文でも良いらしい ◦ https://qiita.com/yuki-k/items/ aeb4ec8f10c391ca1037 #with%E6%A7%8B%E6%96 %87%E3%82%92%E4%BD
%BF%E3%81%86
教訓 • エラー文や行動から起きていることを想像する ◦ Too many open files ◦ 自動化スクリプトから
chromeを立ちあげた → プロセス周りも調べてみる( psコマンド等) • 何か起きた時のことを想定して設計する ◦ フェールセーフ ◦ 今回だと異常終了時でもプロセスを閉じるなど
まとめ Let’s try 自動化 !
おわり