Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Speaker Deck
PRO
Sign in
Sign up for free
rails + serverengineで お手軽daemon
threetreeslight
October 02, 2015
Technology
0
92
rails + serverengineで お手軽daemon
threetreeslight
October 02, 2015
Tweet
Share
More Decks by threetreeslight
See All by threetreeslight
Bottleneck is You
threetreeslight
0
58
Japan Office Society オフィスはスタートアップの成長を助長するのか?阻害するのか?
threetreeslight
0
42
スタートアップは見極められたくない
threetreeslight
0
20
VPoEの責務とは
threetreeslight
0
31
CiecleCIでもくもく会を支える技術
threetreeslight
0
15
Ego vs higher self
threetreeslight
0
16
Performance Hack 101
threetreeslight
0
49
複数のスタートアップを 通して得た失敗と学び
threetreeslight
0
28
How to probe prometheus & grafana. What is helm
threetreeslight
0
16
Other Decks in Technology
See All in Technology
立ち止まっても、寄り道しても / even if I stop, even if I take a detour
katoaz
0
500
230125 古いタブレットの活用 かーでぃさん
comucal
PRO
0
15k
Pentesting Password Reset Functionality
anugrahsr
0
450
MoT/コネヒト/Kanmu が語るプロダクト開発xデータ分析 - 分析から機械学習システムの開発まで一人で複数ロールを担う大変さ
masatakashiwagi
3
730
Exploring MapStore Release 2022.02: improved 3DTiles support and more
simboss
PRO
0
350
Deep Neural Networkの共同学習
hf149
0
250
エアドロップ for オープンソースプロジェクト
epicsdao
0
390
Logbii(ログビー) 会社紹介
logbii
0
120
2年で10→70人へ! スタートアップの 情報セキュリティ課題と施策
miekobayashi
1
580
Oracle Transaction Manager for Microservices Free 22.3 製品概要
oracle4engineer
PRO
5
100
私見「UNIXの考え方」/20230124-kameda-unix-phylosophy
opelab
0
160
OVN-Kubernetes-Introduction-ja-2023-01-27.pdf
orimanabu
1
330
Featured
See All Featured
KATA
mclloyd
12
9.7k
The MySQL Ecosystem @ GitHub 2015
samlambert
240
11k
The Pragmatic Product Professional
lauravandoore
21
3.4k
Thoughts on Productivity
jonyablonski
49
2.7k
Teambox: Starting and Learning
jrom
124
7.9k
Streamline your AJAX requests with AmplifyJS and jQuery
dougneiner
128
8.8k
JazzCon 2018 Closing Keynote - Leadership for the Reluctant Leader
reverentgeek
175
9.1k
YesSQL, Process and Tooling at Scale
rocio
159
12k
The Invisible Customer
myddelton
113
12k
Designing with Data
zakiwarfel
91
4.2k
Faster Mobile Websites
deanohume
295
29k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
270
12k
Transcript
rails + serverengineͰ ͓खܰdaemon Akira Miki Repro Inc. shinjuku.rb #
[email protected]
Sep 30, 2015
Akira Miki Repro @treetreeslight
None
ղੳ͔Βղܾ·ͰαΫοͱ
About job
ReproͰ͍ͬͯΔjob܈ serverengine sidekiq AWS lambda ࢹͯ͠ൃՐ੍ޚ͍ͨ͠ ฒྻΛ੍ݶ͍ͨ͠ ฒྻΛ੍ݶ͠ͳ͍ ΨϯΨϯॲཧ͍ͨ͠ 4ͳͲͷ"84πʔϧ܈
ͱγʔϜϨεͳ࿈ܞͯ͠ ΨγΨγॲཧ͍ͨ͠
ͲΜͳ͜ͱʹͬͯΔͷʁ serverengine sidekiq AWS lambda w ಈըͷม w ղੳσʔλΩϟογϡ w
ఆظܾࡁ w QVTI༧ͷࢹ w *O"QQରऀͷߋ৽ FUDʜ w ϝʔϧΛૹΔ w ղੳσʔλΛૹΔ w ৴σʔλͷ࡞ FUDʜ w 1VTIૹΔ FUDʜ
ͲΜͳ͜ͱʹͬͯΔͷʁ serverengine sidekiq AWS lambda w ಈըͷม w ղੳσʔλΩϟογϡ w
ఆظܾࡁ w QVTI༧ͷࢹ w *O"QQରऀͷߋ৽ FUDʜ w ϝʔϧΛૹΔ w ղੳσʔλΛૹΔ w ৴σʔλͷ࡞ FUDʜ w 1VTIૹΔ FUDʜ
બఆܦҢΛϓϩτλΠϓ࣌ͷ ʮஏ͔ͣ͠ʙʙʙ͍ʯ ࣦഊஊ౿·͑ͯ
ϓϩτλΠϓͩ͠ͱΓ͋͑ͣ cron Rake script SQS SDK ̍୯ҐͩΑ͒
͋ΕʁϝϞϦᷓΕͯͶʁ
ͦΓΌrailsrequireͯ͠rakeୟͱ ϝϞϦΊͬͪΌ৯͏ΑͶ!! ϓϩτλΠϓͱ͍͑ࡶ͗ͨ͢!!!
ϓϩτλΠϓͱ͍͑ ͪΐͬͱؾΛ͓͔ͬͯ͘ cron SQS SDK Server Ӆ͠URL
CPUΔ͖ͩͯ͠Δɾɾɾʁ
ffmpegͬͯݶք·Ͱ CPU͏͔ΒͶʂ ϓϩτλΠϓͱ͍͑ࡶ͗ͨ͢!!!
ͪΌΜͱ͢Δظ • railsͷmodelࢿ࢈Λ͍·Θ͠ • ffmpeg͕CPUΛ৯͍ਚ͘͢ͷͰฒྻ੍ݶͭͭ͠ • Rails requireͷϝϞϦͷΦʔόʔϔου࠷খݶʹ • ࣗલͰdaemonϥούʔॻ͍ͯྑ͍͚Ͳɺγάφ
ϧ੍ޚܥͱ͔ॻ͘ͷΊΜͲ͍ <- Ұ൪ίϨ
serverengine
serverengine ͍͢!!! SQS SDK serverengine long poling wΔ͜ͱʹ߹ΘͤͯXPSLFSௐͭͭ͠ wTVQFSWJTFSࢠͱ͍͏ૉఢߏ wϩά·ΘΓγάφϧʹΑΔϓϩηε੍ޚ·ͰόονϦ
ؾΛ͚ͭͨ͜ͱ
Exception def cycle invoke end def invoke( *arguments )
execute( *arguments ) rescue => error report_exception(error) end def execute( *arguments ) raise NotImplementedError end def report_exception(error) # logging, rollbar, newrelic ... end • handle͠ͳ͕Βࢭ·Βͣલਐ
Avoid memory leak • ʢrubyͷઃఆͰղܾͰ͖Δͱࢥ͏͚Ͳʣfragmentation͕ ཷ·ΔͷͰఆظతʹڧ੍GC class worker … def
run begin GC.stop cycle ensure GC.start end rescue Exception => error report_exception error end … end
Zombi process • long polingதʹdeployΛ࿈ଓ͢Δͱɺzombi͕Ͱ͖Δ serverengine serverengine.pid Kill Kill ̍ճ
2ճ start start pollingத serverengine.pid Override
Memory Usage • serverengineprocess modelͳͷͰɺrailsશ෦͚ͬͯ ΔͱϓϩηεϝϞϦΛ͍ͬͺ͍৯Δɻ worker worker server supervisor
͜Εࢹܥ͡Όͳ͍͠ sidekiqͰΑ͔ͬͨΜ͡Όʁ
Ͱͨ͠ serverengine sidekiq AWS lambda w ಈըͷม w ղੳσʔλΩϟογϡ w
ఆظܾࡁ w QVTI༧ͷࢹ w *O"QQͷλʔήοτߋ ৽ w ಈըͷม w ϝʔϧΛૹΔ w ղੳσʔλΛૹΔ w ৴σʔλͷ࡞ FUDʜ w 1VTIૹΔ FUDʜ
·ͱΊ • serverengine͏ͱdaemon͕α ΫοͱͰ͖Δ