$30 off During Our Annual Pro Sale. View Details »
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
java-monitoring
Search
soudai sone
PRO
January 24, 2018
Technology
5
3.1k
java-monitoring
JJUG ナイトセミナーの登壇資料です。
https://jjug.doorkeeper.jp/events/69650
soudai sone
PRO
January 24, 2018
Tweet
Share
More Decks by soudai sone
See All by soudai sone
手を動かしながら学ぶデータモデリング - 論理設計から物理設計まで / Data modeling
soudai
PRO
30
7.5k
これからアウトプットする人たちへ - アウトプットを支える技術 / that support output
soudai
PRO
19
6.1k
コミュニティと計画的偶発性理論 - 出会いが人生を変える / Life-Changing Encounters
soudai
PRO
7
1.8k
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
60
37k
変化に強いテーブル設計の勘所 / Table design that is resistant to changes
soudai
PRO
68
20k
抽象化をするということ - 具体と抽象の往復を身につける / Abstraction and concretization
soudai
PRO
50
25k
目の前の仕事と向き合うことで成長できる - 仕事とスキルを広げる / Every little bit counts
soudai
PRO
39
37k
ソフトウェアエンジニアとしてキャリアの螺旋を駆け上がる方法 - 経験と出会いが人生を変える / Career-Anchor-Drive
soudai
PRO
20
6.9k
新婚19年目から学ぶ夫婦円満の正しい歩き方 / Life is beautiful
soudai
PRO
12
4.9k
Other Decks in Technology
See All in Technology
なぜ使われないのか?──定量×定性で見極める本当のボトルネック
kakehashi
PRO
1
1k
AWS Bedrock AgentCoreで作る 1on1支援AIエージェント 〜Memory × Evaluationsによる実践開発〜
yusukeshimizu
2
130
AIにおける自由の追求
shujisado
3
480
生成AI時代の自動E2Eテスト運用とPlaywright実践知_引持力哉
legalontechnologies
PRO
0
180
翻訳・対話・越境で強いチームワークを作ろう! / Building Strong Teamwork through Interpretation, Dialogue, and Border-Crossing
ar_tama
4
1.7k
バグハンター視点によるサプライチェーンの脆弱性
scgajge12
2
590
Introduction to Sansan for Engineers / エンジニア向け会社紹介
sansan33
PRO
5
49k
乗りこなせAI駆動開発の波
eltociear
0
160
Design System Documentation Tooling 2025
takanorip
2
950
Claude Code はじめてガイド -1時間で学べるAI駆動開発の基本と実践-
oikon48
45
27k
Oracle Database@AWS:サービス概要のご紹介
oracle4engineer
PRO
0
150
シンプルを極める。アンチパターンなDB設計の本質
facilo_inc
2
1.6k
Featured
See All Featured
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
508
140k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.3k
Git: the NoSQL Database
bkeepers
PRO
432
66k
Fashionably flexible responsive web design (full day workshop)
malarkey
407
66k
Stop Working from a Prison Cell
hatefulcrawdad
273
21k
Statistics for Hackers
jakevdp
799
230k
Bootstrapping a Software Product
garrettdimon
PRO
307
120k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
31
2.7k
Building Adaptive Systems
keathley
44
2.9k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
15k
Producing Creativity
orderedlist
PRO
348
40k
Transcript
WebαʔϏεͷ ϞχλϦϯάͷצॴ ++6(φΠτηϛφʔ
What is it? ϞχλϦϯάͯ͠·͔͢ʁ
What is it? WebαʔϏεੜ͖
What is it? WebαʔϏεੜ͖ ↓ ৗʹมԽ͍ͯ͠Δ
What is it? WebαʔϏε͍͠
What is it? WebαʔϏε͍͠ ↓ ৭ΜͳӨڹΛड͚ͳ͕ΒՔಇ͍ͯ͠Δ
What is it? WebαʔϏε͍͠ ↓ ৭ΜͳӨڹΛड͚ͳ͕ΒՔಇ͍ͯ͠Δ ΠϯλʔωοτɺΫϥΠΞϯτɺ ϓϩτίϧɺαʔόαΠυFUDʜ
What is it? ͔ͩΒͦ͜ϞχλϦϯά͕ඞཁ
What is it? ͔ͩΒͦ͜ϞχλϦϯά͕ඞཁ ↓ ࠓ͔Β࢝ΊΔօ͞Μ
͋͐͡Μͩ ̍ɹࣗݾհ ̎ɹWebαʔϏεΛݟΔ ̏ɹϞχλϦϯάͷצॴ ̐ɹͬͯಘ͢ΔTips ̑ɹ·ͱΊ
͋͐͡Μͩ ̍ɹࣗݾհ ̎ɹWebαʔϏεΛݟΔ ̏ɹϞχλϦϯάͷצॴ ̐ɹͬͯಘ͢ΔTips ̑ɹ·ͱΊ
ࣗݾհ ໊લɿીࠜɹେʢͦͶɹ͚ͨͱʣ ྸɿ33ࡀʢࡾਓͷࢠڙ͕͍·͢ʣ ৬ۀɿCustomer Reliability Engineering ॴଐɿגࣜձࣾ ͯͳʢMackerelνʔϜʣ ɹɹɹຊPostgreSQLϢʔβձ ɹɹɹɹɹɹ
ษڧձ୲ ɹɹٕज़తʹLLܥݴޠͱ͔RDB͕͖Ͱ͢
ࣗݾհ ໊લɿીࠜɹେʢͦͶɹ͚ͨͱʣ ྸɿ33ࡀʢࡾਓͷࢠڙ͕͍·͢ʣ ৬ۀɿCustomer Reliability Engineering ॴଐɿגࣜձࣾ ͯͳʢMackerelνʔϜʣ ɹɹɹຊPostgreSQLϢʔβձ ɹɹɹɹɹɹ
ษڧձ୲ ɹɹٕज़తʹLLܥݴޠͱ͔RDB͕͖Ͱ͢
Mackerel
ͯͳؒΛ୳ͯ͠·͢ curl -sIL mackerel.io | grep engineer
ͯͳؒΛ୳ͯ͠·͢ curl -sIL mackerel.io | grep engineer ͜Εͩͱ$3&ग़ͯ͜ͳ͍ͷͰHSFQDSF͍ͯͩ͘͠͞ʂʂ
͋͐͡Μͩ ̍ɹࣗݾհ ̎ɹWebαʔϏεΛݟΔ ̏ɹϞχλϦϯάͷצॴ ̐ɹͬͯಘ͢ΔTips ̑ɹ·ͱΊ
WebαʔϏεΛݟΔ 8FCαʔϏεੜ͖
%/4 #(1 *41 WebαʔϏεΛݟΔ αʔό ωοτϫʔΫ ΞϓϦέʔγϣϯ ௨৴ৗʹԟདྷ͍ͯ͠Δ ΫϥΠΞϯτ Πϯλʔωοτ
αʔόαΠυ
%/4 #(1 *41 WebαʔϏεΛݟΔ αʔό ωοτϫʔΫ ΞϓϦέʔγϣϯ ௨৴ৗʹԟདྷ͍ͯ͠Δ ΫϥΠΞϯτ Πϯλʔωοτ
αʔόαΠυ
%/4 #(1 *41 WebαʔϏεΛݟΔ αʔό ωοτϫʔΫ ΞϓϦέʔγϣϯ ௨৴ৗʹԟདྷ͍ͯ͠Δ ΫϥΠΞϯτ Πϯλʔωοτ
αʔόαΠυ ࠷Θ͔Γ͍͢ྖҬ ϞχλϦϯά͢Δ͜ͱͰαʔϏεͷঢ়ଶΛΔ
%/4 #(1 *41 WebαʔϏεΛݟΔ αʔό ωοτϫʔΫ ΞϓϦέʔγϣϯ ௨৴ৗʹԟདྷ͍ͯ͠Δ ΫϥΠΞϯτ Πϯλʔωοτ
αʔόαΠυ ࠷Θ͔Γ͍͢ྖҬ ϞχλϦϯά͢Δ͜ͱͰαʔϏεͷঢ়ଶΛΔ ϞχλϦϯάʹΑΔޮՌ͕ग़͍͢
%/4 #(1 *41 WebαʔϏεΛݟΔ αʔό ωοτϫʔΫ ΞϓϦέʔγϣϯ ௨৴ৗʹԟདྷ͍ͯ͠Δ ΫϥΠΞϯτ Πϯλʔωοτ
αʔόαΠυ
%/4 #(1 *41 WebαʔϏεΛݟΔ αʔό ωοτϫʔΫ ΞϓϦέʔγϣϯ ௨৴ৗʹԟདྷ͍ͯ͠Δ ΫϥΠΞϯτ Πϯλʔωοτ
αʔόαΠυ ίϯτϩʔϧͰ͖Δ͕ҙਤ͠ͳ͍͜ͱଟ͍
%/4 #(1 *41 WebαʔϏεΛݟΔ αʔό ωοτϫʔΫ ΞϓϦέʔγϣϯ ௨৴ৗʹԟདྷ͍ͯ͠Δ ΫϥΠΞϯτ Πϯλʔωοτ
αʔόαΠυ ίϯτϩʔϧͰ͖Δ͕ҙਤ͠ͳ͍͜ͱଟ͍ ϞχλϦϯά͠ͳ͍ͱݪҼٻग़དྷͳ͍
%/4 #(1 *41 WebαʔϏεΛݟΔ αʔό ωοτϫʔΫ ΞϓϦέʔγϣϯ ௨৴ৗʹԟདྷ͍ͯ͠Δ ΫϥΠΞϯτ Πϯλʔωοτ
αʔόαΠυ
%/4 #(1 *41 WebαʔϏεΛݟΔ αʔό ωοτϫʔΫ ΞϓϦέʔγϣϯ ௨৴ৗʹԟདྷ͍ͯ͠Δ ΫϥΠΞϯτ Πϯλʔωοτ
αʔόαΠυ զʑͰίϯτʔϧग़དྷͳ͍ྖҬ
%/4 #(1 *41 WebαʔϏεΛݟΔ αʔό ωοτϫʔΫ ΞϓϦέʔγϣϯ ௨৴ৗʹԟདྷ͍ͯ͠Δ ΫϥΠΞϯτ Πϯλʔωοτ
αʔόαΠυ զʑͰίϯτʔϧग़དྷͳ͍ྖҬ ͔ͩΒͦ͜ϞχλϦϯά͕େࣄ
WebαʔϏεΛݟΔ αʔόαΠυ w 04 w ωοτϫʔΫ w ϛυϧΣΞ w ΞϓϦέʔγϣϯʜFUD
WebαʔϏεΛݟΔ ΫϥΠΞϯταΠυ w ϒϥβ w +BWB4DSJQU w ϓϩτίϧ w ωοτϫʔΫʜFUD
WebαʔϏεΛݟΔ Πϯλʔωοτ w ϨΠςϯγʔ w εϧʔϓοτ w ϨεϙϯεʜFUD
WebαʔϏεΛݟΔ ͦΕͧΕͷৼΔ͍ΛՄࢹԽ͢Δ
WebαʔϏεΛݟΔ
WebαʔϏεΛݟΔ 8FCαʔϏεੜ͖
WebαʔϏεΛݟΔ 8FCαʔϏεੜ͖ ˣ αʔϏεࣗମՄࢹԽ͢Δ
WebαʔϏεΛݟΔ αʔϏεͷՄࢹԽ w 17๚ w μϯϩʔυ w Ϣʔβͷར༻ྔ w Ϋϥυྉۚͷ՝ۚྔʜFUD
WebαʔϏεΛݟΔ αʔϏεͷมԽ γεςϜͷมԽͱ૬ؔ
WebαʔϏεΛݟΔ ͔ͩΒ8FCαʔϏεΛݟΔ
WebαʔϏεΛݟΔ ͔ͩΒ8FCαʔϏεΛݟΔ ˣ ͦͷͨΊʹৼΔ͍ΛՄࢹԽ͢Δ
WebαʔϏεΛݟΔ
͋͐͡Μͩ ̍ɹࣗݾհ ̎ɹWebαʔϏεΛݟΔ ̏ɹϞχλϦϯάͷצॴ ̐ɹͬͯಘ͢ΔTips ̑ɹ·ͱΊ
ϞχλϦϯάͷצॴ Γ͍ͨ͜ͱԿͳͷ͔ʁ
ϞχλϦϯάͷצॴ Γ͍ͨ͜ͱԿͳͷ͔ʁ ˣ αʔϏε͕ਖ਼͘͠ಈ͍͍ͯΔ͔
ϞχλϦϯάͷצॴ γεςϜͷϞχλϦϯά ϦιʔεΛਖ਼͑ͯ͘͠Δ͔
ϞχλϦϯάͷצॴ γεςϜͷϞχλϦϯά ϦιʔεΛਖ਼͑ͯ͘͠Δ͔ Ϧιʔε͕ෆͯ͠༨Βͯ͠ବ
ϞχλϦϯάͷצॴ ҙਤ͠ͳ͍ڍಈʹؾ͘
ϞχλϦϯάͷצॴ αʔϏεͷมԽͷػඍʹؾ͘
ϞχλϦϯάͷצॴ αʔϏεͷมԽͷػඍʹؾ͘ ˣ มԽͷ͕ࠩ͋Δ͔Βؾ͚Δ
ϞχλϦϯάͷצॴ γεςϜͷঢ়ଶΛՄࢹԽ͢Δ
%/4 #(1 *41 WebαʔϏεΛݟΔ αʔό ωοτϫʔΫ ΞϓϦέʔγϣϯ ௨৴ৗʹԟདྷ͍ͯ͠Δ ΫϥΠΞϯτ Πϯλʔωοτ
αʔόαΠυ શͯγεςϜ
ϞχλϦϯάͷצॴ ౿ΈࠐΜͩγεςϜͷՄࢹԽ w ࣮ߦCBUDIͷδϣϒ w Ωϡʔ w อଘ͞ΕͯΔը૾ w %/4/51ͷঢ়ଶ
ϞχλϦϯάͷצॴ αʔϏεͷঢ়ଶΛՄࢹԽ͢Δ
ϞχλϦϯάͷצॴ ౿ΈࠐΜͩαʔϏεͷՄࢹԽ w ϢʔβͷϓϨΠঢ়گ w Πϯετʔϧ͞Εͨ04 w Ϣʔβͷݕࡧϫʔυ w ਃ͠ࠐΈϘλϯͷΫϦοΫ
ϞχλϦϯάͷצॴ αʔϏεͷՄࢹԽͷ5JQT
ϞχλϦϯάͷצॴ 5XJUUFSͰ ʮ˓˓ॏ͍ʯ ͷසग़ྔΛϞχλϦϯά͢Δ
ϞχλϦϯάͷצॴ ͍߹ΘͤճΛՄࢹԽ
ϞχλϦϯάͷצॴ JTTVFλεΫͷΛՄࢹԽ
ϞχλϦϯάͷצॴ ࣗͷαʔϏεͷ֎ՄࢹԽ͢Δ
ϞχλϦϯάͷצॴ ՄࢹԽ͢Δ͜ͱͰৄࡉ͕ݟ͑ͯ͘Δ
ϞχλϦϯάͷצॴ ՄࢹԽ͢Δ͜ͱͰৄࡉ͕ݟ͑ͯ͘Δ ˣ վળͷαΠΫϧ͕ճΓग़͢
ϞχλϦϯάͷצॴ ୭ݟͳ͍άϥϑʹҙຯແ͍
͋͐͡Μͩ ̍ɹࣗݾհ ̎ɹWebαʔϏεΛݟΔ ̏ɹϞχλϦϯάͷצॴ ̐ɹͬͯಘ͢ΔTips ̑ɹ·ͱΊ
ͬͯಘ͢ΔTips γεςϜϝτϦοΫͷݟํ
γεςϜϝτϦοΫͷݟํ
γεςϜϝτϦοΫͷݟํ γεςϜͷঢ়ଶΛՄࢹԽ͢Δ w MPBEBWH w DQV w NFNPSZ w EJTL
w JOUFSGBDF w pMFTZTUFN
γεςϜϝτϦοΫͷݟํ γεςϜͷঢ়ଶΛՄࢹԽ͢Δ w MPBEBWH w DQV w NFNPSZ w EJTL
w JOUFSGBDF w pMFTZTUFN
ϩʔυΞϕϨʔδ w ࣮ߦͪ ࣮ߦΩϡʔʹ͋Δ ϓϩηεͷ w σΟεΫͷ*0ͪͷϓϩηεͷ ˣ ߹ܭ
ϩʔυΞϕϨʔδ w ࣮ߦͪ ࣮ߦΩϡʔʹ͋Δ ϓϩηεͷ w σΟεΫͷ*0ͪͷϓϩηεͷ ˣ ߹ܭ ͭ·ΓϩʔυΞϕϨʔδ͕ߴ͚Ε
$16%JTL*0͕٧·͍ͬͯΔ͜ͱΛද͢
ϩʔυΞϕϨʔδ VQUJNF ɹVQ VTFS MPBEBWFSBHF
ϩʔυΞϕϨʔδ VQUJNF ɹVQ VTFS MPBEBWFSBHF
ϩʔυΞϕϨʔδ VQUJNF ɹVQ VTFS MPBEBWFSBHF
ϩʔυΞϕϨʔδ VQUJNF ɹVQ VTFS MPBEBWFSBHF 3
1 5 10
ϩʔυΞϕϨʔδ MPBEBWH্͕͕Δͱ γεςϜʹෛՙ͕͔͔͍ͬͯΔ
ϩʔυΞϕϨʔδ MPBEBWH্͕͕Δͱ γεςϜʹෛՙ͕͔͔͍ͬͯΔ ͔͠͠ଈোͱݶΒͳ͍
ϩʔυΞϕϨʔδ ॠؒతʹॲཧ͕ूதͯ͠ɺ ฏৗ࣌ͷෛՙʹ·Ͱ མͪண͘͜ͱ͕Ͱ͖Δ͔Ͳ͏͔
ϩʔυΞϕϨʔδ ʮ࣮ࡍʹࡹ͍͍ͯΔॲཧྔʢYʣʯ ʮࡹ͖͘ॲཧͷ૯ྔʢZʣʯ ͕YZʹͳ͍ͬͯͳ͍͔
ϩʔυΞϕϨʔδ
ϩʔυΞϕϨʔδ εύΠΫ͍ͯ͠Δ͕ ͙͢ʹऩଋ͍ͯ͠ΔͷͰແ͍
ϩʔυΞϕϨʔδ X < Y !
ϩʔυΞϕϨʔδ X < Y !
CPU DISC
γεςϜϝτϦοΫͷݟํ γεςϜͷঢ়ଶΛՄࢹԽ͢Δ w MPBEBWH w DQV w NFNPSZ w EJTL
w JOUFSGBDF w pMFTZTUFN
CPU $16༻ͷׂ߹ΛΔ
CPU $16༻ͷׂ߹ΛΔ $16͕ͷ߹ʹ Ͳ͜Ͱ͍ͬͯΔ͔ΛΔ
CPUͰ͑Δ͖ϝτϦοΫ w DQVVTFS w DQVJPXBJU w DQVTZTUFN w DQVJEMF
CPUͰ͑Δ͖ϝτϦοΫ w DQVVTFS w DQVJPXBJU w DQVTZTUFN w DQVJEMF ΧʔωϧҎ֎͕༻ͨ࣌ؒ͠ͷׂ߹
CPUͰ͑Δ͖ϝτϦοΫ w DQVVTFS w DQVJPXBJU w DQVTZTUFN w DQVJEMF *0ͪʹΑΓΞΠυϧঢ়ଶͰ
͋ͬͨ࣌ؒͷׂ߹
CPUͰ͑Δ͖ϝτϦοΫ w DQVVTFS w DQVJPXBJU w DQVTZTUFN w DQVJEMF Χʔωϧ͕༻ͨ࣌ؒ͠ͷׂ߹
CPUͰ͑Δ͖ϝτϦοΫ w DQVVTFS w DQVJPXBJU w DQVTZTUFN w DQVJEMF *0͕ͪͳ͘ɺ͔ͭ$16͕
ΞΠυϧঢ়ଶͰ͋ͬͨ࣌ؒͷׂ߹
cpu.iowait͕ߴಅ͍ͯ͠Δ࣌ σΟεΫͷ*0ੑೳ͕ωοΫ
cpu.iowait͕ߴಅ͍ͯ͠Δ࣌ σΟεΫͷ*0ੑೳ͕ωοΫ %JTDͷϝτϦοΫͷ3FBEͱ8SJUFΛ֬ೝ
cpu.user͕ߴಅ͍ͯ͠Δ࣌ ΧʔωϧҎ֎ͷϓϩηε͕ݪҼ
cpu.user͕ߴಅ͍ͯ͠Δ࣌ ΧʔωϧҎ֎ͷϓϩηε͕ݪҼ ྫ͑ΞϓϦέʔγϣϯ
cpu.user͕ߴಅ͍ͯ͠Δ࣌ ΧʔωϧҎ֎ͷϓϩηε͕ݪҼ ྫ͑ΞϓϦέʔγϣϯ ΞϓϦͷվળΛߦ͏͔ɺ$16ͷεϖοΫΛ্͛Δ͜ͱͰ վળ͞ΕΔՄೳੑ͕͋Δ
ϞχλϦϯάͷצॴ 45 IUUQCMPHBLOPXNFFOUSZ
ΞϓϦέʔγϣϯΛΔ +BWBͷৼΔ͍ΛΔ
ΞϓϦέʔγϣϯΛΔ +BWBͷৼΔ͍ΛΔ ˣ +7.ΛϞχλϦϯά͢Δ
JVMͷϞχλϦϯά KTUBUΛ͏ IUUQTEPDTPSBDMFDPNKBWBTF EPDTUFDIOPUFTUPPMTTIBSFKTUBUIUNM
JVMͷϞχλϦϯά
JVMͷϞχλϦϯά KPMPLJBΛ͏ IUUQTKPMPLJBPSH
JVMͷϞχλϦϯά NFUSJDTΛ͏ IUUQNFUSJDTESPQXJ[BSEJP
JVMͷϞχλϦϯά .BDLFSFMͰ+BWBͷΞϓϦέʔγϣϯ ϞχλϦϯάΛ͢Δ IUUQTRJJUBDPNLBXBTJNBJUFNTCGECCCB
͋͐͡Μͩ ̍ɹࣗݾհ ̎ɹWebαʔϏεΛݟΔ ̏ɹϞχλϦϯάͷצॴ ̐ɹͬͯಘ͢ΔTips ̑ɹ·ͱΊ
·ͱΊ ·ͣՄࢹԽΛ͢Δ
·ͱΊ ਪଌΑΓܭଌ
·ͱΊ ਪଌΑΓܭଌ ↓ ܭଌΑΓ؍ଌ
·ͱΊ ࣄ࣮ΛΑΓଟ͘ɺਖ਼͘͠Δ͜ͱͰ ະདྷΛਖ਼͘͠༧ଌͰ͖Δ
None
·ͱΊ ΤϯδχΞʹࠜڌ͕ඞཁ
·ͱΊ ΤϯδχΞʹࠜڌ͕ඞཁ ↓ ͳΜͱͳ͘Ͱࣄग़དྷͳ͍
·ͱΊ
·ͱΊ
·ͱΊ
·ͱΊ ςετίʔυϓϩάϥϜͷ࣭ͷՄࢹԽ ϞχλϦϯάαʔϏεͷ࣭ͷՄࢹԽ
·ͱΊ lࢹͱܧଓతͳςετͰ͋Δz ԞҰึ IUUQEFWFMPQFSDZCP[VDPKQBSDIJWFTLB[VIPDSPOMPHGIUNM
·ͱΊ lߴʹൃୡͨ͠γεςϜͷҟৗ ਆͷౖΓͱݟ͚͕͔ͭͳ͍z Z@VVLJ
·ͱΊ ମॏܭʹΔ͚ͩͰ૫ͤͳ͍
·ͱΊ ମॏܭʹΔ͚ͩͰ૫ͤͳ͍ ↓ ࣭ΛՄࢹԽ͚ͨͩ͠Ͱվળ͞Εͳ͍
·ͱΊ lखΛಈ͔ͨ͠ਓ͚͕ͩੈքΛม͑Δz :BTVIJSP0OJTIJ
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠ɻ