Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Manage cloud server with open source tools
Search
yunglin
November 14, 2014
Technology
160
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Manage cloud server with open source tools
yunglin
November 14, 2014
More Decks by yunglin
See All by yunglin
NoSQL 大腸花
yunglin
27
3.8k
Java Developer Day 2013 Scala Future API
yunglin
3
800
Java Developer Day 2012 Introduction to Actor Model
yunglin
1
200
Software Quality Metrics
yunglin
1
120
Other Decks in Technology
See All in Technology
Datadog の学び方 - あるいは、オブザーバビリティを学ぶとは何か
mananyuki
1
450
生成AIを使って「人が」考える技術 ― AI時代の人機共想と実践ノウハウ|UNITT AC2026
ishiirikie
0
550
自分で立ててみるLLMサービス
y_sera15
0
100
あなたの知らないAmazon VPC Route Server/Amazon VPC Route Server you don't know about
masakiokuda
2
220
全人類(ほぼ)AWS Organizations の上でAWSを利用している、その世界を知る話
htan
0
110
カンファレンスに参加した後の浮遊感とセルフケア
pauli
0
310
HacobuにおけるFDEとは/登壇資料(戸井田 裕貴)
hacobu
PRO
1
780
AI Made Us Faster at Solving the Wrong Problems
marceloancelmo
0
160
AI時代だからこそ推したい!Gitコマンド再入門
munakata
0
150
事業活動を AI Ready にする攻めと守りのデータエンジニアリング / data-engineering-for-ai-ready-business
pei0804
1
230
サーバーフルコンピューティング?AWS Lambda
iwatatomoya
1
250
ai_cording_with_k8s_knowledge.pdf
mochizuki875
1
280
Featured
See All Featured
Large-scale JavaScript Application Architecture
addyosmani
515
110k
Agile that works and the tools we love
rasmusluckow
331
22k
A better future with KSS
kneath
240
18k
Faster Mobile Websites
deanohume
310
32k
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
68
58k
Future Trends and Review - Lecture 12 - Web Technologies (1019888BNR)
signer
PRO
0
3.8k
Getting science done with accelerated Python computing platforms
jacobtomlinson
2
520
Building an army of robots
kneath
307
47k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
203
76k
Color Theory Basics | Prateek | Gurzu
gurzu
1
480
Bootstrapping a Software Product
garrettdimon
PRO
306
120k
Conquering PDFs: document understanding beyond plain text
inesmontani
PRO
4
3.2k
Transcript
#JCConf .BOBHF4FSWFST0O5IF $MPVEXJUI0QFO4PVSDF5PPMT 何永琳 @ Fliptop Director of Engineering ⼯工頭
陾玑 • 捀➊랂䧮⦛銳湋䱽ծ庠ꆀ • 剣➊랂䭷垥銳湋䱽ծ庠ꆀ • 剣➊랂䊨Ⱘ〳⟄䍲⸔䧮⦛ • NFUSJDTCZDPEBIBMF •
33%5PPMT
锞铇㻜涸㔐瘸鸏⦐㉏겗
⡹♧㣔漗䎙⦐㼭儘 ref: http://xkcd.com/386/
⡹♧㣔漗䎙⦐㼭儘 ref: http://xkcd.com/386/
⡹♧㣔漗䎙⦐㼭儘 ref: https://jawbone.com/up
⡹♧㣔漗䎙⦐㼭儘 ref: https://jawbone.com/up
植㻜䖃䖃嫲⡹䟝⫹涸婫ꃏ
铇㻜涸㼩荈䧮僽佖㊥涸㨥
㥶卓䧮⦛㼩荈魨涸钢濼鿪剤铐䊴 齡䧮⦛㻨涸鮿넓ヤ
4PGUXBSF-JGFDZDMF
斊麌♳涸朜屣 • 㣐ꆀ崨ꆀ弈Ⰶ • ♳涰㣔涸麋遤 • 顺俱䏨⪓⟧ • 㢪鿈剪 40"
.JDSP4FSWJDF ㉏겗 • 䳕倝炽넒
斊麌♳涸朜屣 • 㣐ꆀ崨ꆀ弈Ⰶ • ♳涰㣔涸麋遤 • 顺俱䏨⪓⟧ • 㢪鿈剪㉏겗 •
䳕倝炽넒 • 5ISPVHIQVU • 3FTQPOTFUJNF • XPSTUDBTF35
斊麌♳涸朜屣 • 㣐ꆀ崨ꆀ弈Ⰶ • ♳涰㣔涸麋遤 • 顺俱䏨⪓⟧ • 㢪鿈剪㉏겗 •
䳕倝炽넒 • .FNPSZ-FBL • $BDIF6TBHF )JU .JTT • +7.)FBQTJ[F
斊麌♳涸朜屣 • 㣐ꆀ崨ꆀ弈Ⰶ • ♳涰㣔涸麋遤 • 顺俱䏨⪓⟧ • 㢪鿈剪㉏겗 •
䳕倝炽넒 • QFSGPSNBODF
斊麌♳涸朜屣 • 㣐ꆀ崨ꆀ弈Ⰶ • ♳涰㣔涸麋遤 • 顺俱䏨⪓⟧ • 㢪鿈剪㉏겗 •
䳕倝炽넒 • "WBJMBCJMJUZ • 3FMJBCJMJUZ • 3FTQPOTF5JNF • %PXOUJNF • .BJOUFOBODF 4DIFEVMF
斊麌♳涸朜屣 • 㣐ꆀ崨ꆀ弈Ⰶ • ♳涰㣔涸麋遤 • 顺俱䏨⪓⟧ • 㢪鿈剪㉏겗 •
䳕倝炽넒 • 鐱⠮倝炽넒宠 • 倝涸禹窠侷
.FUSJDT#Z$PEBIBMF Mind The Gap!
(BVHFT • 鎹ꏖ殹♴涸⧩ Metrics.newGauge(QueueManager.class, "pending-jobs", new Gauge<Integer>() { @Override
public Integer value() { return queue.size(); } });
$PVOUFS private final Counter pendingJobs = Metrics.newCounter(QueueManager.class, "pending-jobs"); public void
addJob(Job job) { pendingJobs.inc(); queue.offer(job); } public Job takeJob() { pendingJobs.dec(); return queue.take(); }
.FUFS • 鎹ꏖ㶸》涸鸟桧 private final Meter requests = Metrics.newMeter(RequestHandler.class, "requests",
“requests", TimeUnit.SECONDS); public void handleRequest(Request request, Response response) { requests.mark(); // etc }
)JTUPHSBNT • 鎹ꏖ顺俱涸窠鎙ⴔ區ծⴔ⡑ minimum maximum mean standard deviation 75 percentile
95 percentile 98 percentile 99 percentile 99.9 percentile
)JTUPHSBNT private final Timer responses = Metrics.newTimer( RequestHandler.class, "responses", TimeUnit.MILLISECONDS,
TimeUnit.SECONDS); public String handleRequest(Request request, Response response) { final TimerContext context = responses.time(); try { // etc; return "OK"; } finally { context.stop(); } }
)JTUPHSBNT暶殯⸆腋
)JTUPHSBNT暶殯⸆腋 Data Points: 1,000 req/sec * 60 * 60 *
24 = 691,200,000 or 5 GB
)JTUPHSBNT暶殯⸆腋 • 䱰垺䖃❀ⴔꗻⰊ涸✲⟝⨊俷 ref: http://codahale.com/codeconf-2011-04-09-metrics-metrics-everywhere.pdf
剤✫鸏❉须俲䖕䧮⦛銴䙦랃欽ヤ
+.9JOUFSGBDF
KTPOJOUFSGBDF "jvm" : { "vm" : { "name" : "Java
HotSpot(TM) 64-Bit Server VM", "version" : "1.6.0_45-b06" }, "memory" : { "totalInit" : 8.5761344E7, "totalUsed" : 8.4700376E7, "totalMax" : 1.087111168E9, "totalCommitted" : 1.16129792E8, "heapInit" : 6.1447488E7, "heapUsed" : 2.876592E7, "heapMax" : 9.50796288E8, "heapCommitted" : 5.9834368E7, "heap_usage" : 0.030254556483922664, "non_heap_usage" : 0.4103368905874399, "memory_pool_usages" : { "Code Cache" : 0.058741251627604164, "Eden Space" : 0.0375141103764524, "Perm Gen" : 0.6161499953851467, "Survivor Space" : 0.003552734375, "Tenured Gen" : 0.028688572989019088 }
KTPOJOUFSGBDF "daemon_thread_count" : 17, "thread_count" : 74, "current_time" : 1415698443730,
"uptime" : 20471620, "fd_usage" : 0.0013427734375, "thread-states" : { "timed_waiting" : 0.7837837837837838, "blocked" : 0.013513513513513514, "runnable" : 0.16216216216216217, "waiting" : 0.04054054054054054, "new" : 0.0, "terminated" : 0.0 }, "garbage-collectors" : { "MarkSweepCompact" : { "runs" : 5, "time" : 946 }, "Copy" : { "runs" : 268889, "time" : 498572 } } "application.info" : { "version" : { "type" : "gauge", "value" : "1.2.0-20140319-SNAPSHOT" } },
(BVHF "net.sf.ehcache.Cache.http-service-cache" : { "accuracy" : { "type" : "gauge",
"value" : "None" }, "eviction-count" : { "type" : "gauge", "value" : 2521997 }, "in-memory-hits" : { "type" : "gauge", "value" : 1213691 }, "in-memory-misses" : { "type" : "gauge", "value" : 3531312 }, "in-memory-objects" : { "type" : "gauge", "value" : 3587 },
.FUFS "org.eclipse.jetty.servlet.ServletContextHandler" : { "2xx-responses" : { "type" : "meter",
"event_type" : "responses", "unit" : "seconds", "count" : 733665, "mean" : 2.014399884583874, "m1" : 0.18145603566649257, "m5" : 0.6958598626391137, "m15" : 0.9097181383462438 }, "4xx-responses" : { "type" : "meter", "event_type" : "responses", "unit" : "seconds", "count" : 2006, "mean" : 0.00550780829135732, "m1" : 3.0263603123472702E-58, "m5" : 4.125713901938956E-14, "m15" : 4.134678963142411E-7 },
)JTUPHSBN "com.fliptop.spendscore.backend.craweler" : { "requests" : { "type" : "timer",
"duration" : { "unit" : "milliseconds", "min" : 0.076781, "max" : 43874.994542, "mean" : 406.840418123641, "std_dev" : 583.3339808219433, "median" : 554.004911, "p75" : 603.6283882500001, "p95" : 708.6854972499999, "p98" : 849.4521964999997, "p99" : 1024.8766623300019, "p999" : 2524.4020420530032 }, "rate" : { "unit" : "seconds", "count" : 150290, "mean" : 0.41264477142585376, "m1" : 0.026800109705232115, "m5" : 0.09772776121229207, "m15" : 0.13448567778710924 } }
殥㕮
䬘陪㜡 ref:http://www.nagios.com/products/nagiosxi/screenshots
⚮-PBE#BMBODFS ref:http://www.nagios.com/products/nagiosxi/screenshots public class MyMongoDBHealthCheck{ public MyMongoDBHealthCheck(MongoDB db) { this.db
= db; super(“mongodb”); } @Override public Result check() { try { // run query return Result.healthy(); } catch (Exception e) { return Result.unhealthy("Cannot connect to Mongodb”); } } } HealthChecks.register(new MarketoHealthCheck(marketo));
⚮-PBE#BMBODFS ref:http://www.nagios.com/products/nagiosxi/screenshots HealthChecks.register(new MarketoHealthCheck(marketo)); // in pre-processing filter Map<String, Result>
health = HealthChecks.runHealthChecks() // proceed only if all health checks return OK. // return exception if any check fails.
2"