Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Seleniumでイキってたらサーバを絞め落としかけてた話
Search
kenFuji
June 08, 2022
Programming
0
700
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
GraalVM Native Image トラブルシューティング機能の最新状況(2025年版)
ntt_dsol_java
0
150
『実践MLOps』から学ぶ DevOps for ML
nsakki55
2
430
Private APIの呼び出し方
kishikawakatsumi
3
880
Honoを技術選定したAI要件定義プラットフォームAcsimでの意思決定
codenote
0
240
The Missing Link in Angular's Signal Story: Resource API and httpResource
manfredsteyer
PRO
0
130
Vueで学ぶデータ構造入門 リンクリストとキューでリアクティビティを捉える / Vue Data Structures: Linked Lists and Queues for Reactivity
konkarin
1
310
DartASTとその活用
sotaatos
2
130
AIの弱点、やっぱりプログラミングは人間が(も)勉強しよう / YAPC AI and Programming
kishida
9
4.9k
スタートアップを支える技術戦略と組織づくり
pospome
6
2.5k
What's New in Web AI?
christianliebel
PRO
0
130
CSC509 Lecture 10
javiergs
PRO
0
180
例外処理を理解して、設計段階からエラーを見つけやすく、起こりにくく #phpconfuk
kajitack
12
6.2k
Featured
See All Featured
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
Designing for humans not robots
tammielis
254
26k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
37
2.6k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
36
6.1k
How To Stay Up To Date on Web Technology
chriscoyier
791
250k
Art, The Web, and Tiny UX
lynnandtonic
303
21k
Unsuck your backbone
ammeep
671
58k
The Straight Up "How To Draw Better" Workshop
denniskardys
239
140k
Git: the NoSQL Database
bkeepers
PRO
432
66k
Documentation Writing (for coders)
carmenintech
76
5.1k
A better future with KSS
kneath
239
18k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
118
20k
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 自動化 !
おわり