本篇文章是個經驗談,作者想要聊聊是如何將一個 4vCPU 的VM給調整到可以達到每秒處理 1.2M(120萬)個 JSON Reuqest,本篇文章非常的長,所以會分多天來介紹。
整篇文章探討的是各種 turning 的步驟,來聊聊如何從最初每秒 224k(22萬四千) 給調整到每秒 1.2M 的處理能力。
整個過程分成九大步驟,後面同時標示每個過程後的每秒請求能力
1. Application Optimizations (347k)
2. Speculative Execution Migtigations (446k)
3. Syscall Auditing/Blocking (495k)
4. Disabling iptables/netfilter (603k)
5. Perfect Locality (834k)
6. Interrypt Optimizations (1.06M)
7. The Case of the Nosy Neighbor (1.12M)
8. The Battle Against the Spin Lock (1.15M)
9. This Gost to Twelv (1.20M)
作者強調,上述的過程不一定適合你的應用程式,但是透過這些步驟能夠讓你更佳瞭解應用程式的運作行為,同時也有機會發現一些潛在的瓶頸問題。
環境介紹
1. 團隊使用 Techempower 來進行 JSON Serialization 的測試
2. 使用 libreactor(event-driven框架) 來搭建一個簡單的 API Server
3. HTTP 的解析使用 picohttpparser,同時使用 libclo 來處理 JSON 的編碼
4. 硬體環境
- Server: 4 vCPU, c5n.xlarge AWS VM
- Client: 16 vCPU, c5n.4xlarge AWS VM (clinet太弱會變成瓶頸)
- Network: Server/Client 屬於同一個可用區域(AZ)
5. 軟體環境
- 作業系統: Amazon Linux2 (Kernel 4.14)
- Server: 使用 libreactor (使用不同版本,分別是 Round18 以及 Round20)
- Client: 修改 wrk 這個知名的工具並重新命名為 twrk,詳細差異自己看文章內部,主要都跟顯示有關
6. 實驗方式
- 每個測試跑三次,取中間值
- 256 連線,16 threads,同時每個 thread 都會 pin 到一個固定的 CPU
- 每個實驗都有兩秒的暖機時間來建立連線
Ground Zero
第一個要探討的就是什麼最佳化都還沒有使用前,到底當前應用程式可能的瓶頸在哪裏
首先團隊將該應用程式與其他常見的應用程式或是開發框架比較,譬如 Netty, Nginx, Actix, aspcore 等, libreactor 的效能不錯,有中上水準。
接者作者使用火焰圖(Flame Graphs)來 Profile 該伺服器,作者很好心地將文章中所有的火焰圖都調整了一下,讓所有的 user-space 相關的 function call 都轉成藍色,而剩下跟 kernel 相關都維持紅色。
1. 大部分的時間都在 Kernel 處理
2. 主要是花費在收封包與送封包
3. 應用程式本身主要是分兩大部分,解析 HTTP 的封包以及處理請求與回應。
從上述兩點來看,作者認為目前的應用程式寫得算不錯,因為瓶頸很明顯是卡在 Kernel 端
接下來就正式進入到各種 Turning 的章節探討
Application Optimizations
長話短說:
- 作者基於 libreactor Round18 的框架進行修改,並且所有的修改都已經被合併到 Round20 的版本中,而這些修改主要是實作方面的強化以及整個框架的最佳化。
1. 作者首先透過 htop 觀察運行過程,發現 Server 只有使用 2vCPU 而已(系統有 4vCPU),因此這是作者進行的第一個修改,讓 Server 使用了 4vCPU,這個簡單調整就讓效能提升 25%
註: 作者特別強調,不要覺得從 2vCPU 變成 4vCPU 效能就可以變成兩倍,主要是1) 沒有使用的 vCPU 還有很多其他的工作要處理,因此不是完全都送給你應用程式處理。2)基於 hypter-thread vCPU 的架構,環境只有兩個真正的 CPU 而是透過邏輯的方式產生四個抽象的 CPU,所以全用一定會變快,但是基於很多資源還是要競爭與共用,數字不是單純翻倍
2. 作者自己的應用程式本身使用 gcc 建置時有使用 "-o3" 的方式來最佳化處理,然而框架本身卻沒有使用 "-o3" 的方式來弄,因此作者也針對這個部分來處理,讓建制框架時能夠使用 -o3
3. 從實作方面來看,作者觀察到 libreactor 1.0 版本使用的是 read/write 這兩個常見的方式來處理封包的送收,作者將其修改成 recv/send 整個效能就提升了將近 10%。
註: write(針對 FD,更全面廣泛的用法) 與 send(針對 Socket,更針對的用法) 使用上差異不大,但是 write 於底層 Kernel 最終還是會呼叫到 send 來處理,所以基本上可以理解就是在沒有特別參數需求時,可以直接跳過幾個 kernel function 來達到加速的效果。
write kernel 內的走向: sys_write -> vfs_write -> __vfs_write -> sock_write_iter -> sock_sendmsg
send kernel 內的走向: sendto -> sock_sendmsg
4. 作者觀察到火焰圖中有一些 pthread 相關的資料,進而發現 libreactor 會創造一個 thread pool 來處理非同步的 DNS 名稱解析問題。對於一個 HTTP Client 來說,如果今天要發送請求到多個不同的 domain,而每個 domain 都會需要進行一個 blocking 的解析過程,透過這種方式可以減少 DNS 解析造成的 blocking 問題。然而對於 HTTP Server 來說,這個使用情境帶來的效益似乎就稍微低了些,畢竟 Server 只有 Bind Socket 之前可能會需要去解析一次 DNS 而已。
大部分的情境下, thread pool 都是應用程式初期會去創造而接者就不太會管她,但是對於錙銖必較的效能除錯人來說,任何能夠調整的部分都可能是個值得探討的地方。
作者透過修改 Server 端(準確來說是 libreactor 框架內的程式碼)關於 Thread Pool 的一些用法,成長的讓整個效能提升了 2~3%
結論來說,透過上述四個概念來提升的程式碼效能。
1. vCPU 盡量使用: 25%-27%
2. 使用 gcc -O3 來建置框架的程式碼: 5%-10%
3. 使用 march=native 等參數來建置最後的 server 應用程式: 5%-10%
4. 使用 send/recv 而非 write/read: 5%-10%
5. 修改 pthread 的用法: 2%-3%
註: 作者強調每個最佳化的結果並非是單純累積的概念,反而還會有互補的效果。
可能前述的操作實際上也會讓後續的操作達到更好的效果,
譬如如果先跑 vCPU 的調整,效能大概提升 25%,但是如果先執行別的最佳化過程,最後再來調整 vCPU,就可以達到 40% 的效果,主要是 CPU 可以共有效率的去執行程式。
最後,這個部分讓整個處理封包能力從 224k 提升了 55% 到 347k (req/s)。
從火焰圖來看,整個 user-space 的範圍縮小許多,同時 send/recv 的處理也有使得整體的高度下降一點點(大概四格..)
為了避免文章過長,本篇文章就探討第一個最佳化的過程,剩下的就敬請期待後續!
https://talawah.io/blog/extreme-http-performance-tuning-one-point-two-million/
同時也有3部Youtube影片,追蹤數超過1,310的網紅バーゲンゾネス,也在其Youtube影片中提到,☆ジャーニー攻略記事☆ https://bz-games.com/kouryaku/journey-ciri ・トーナメントモード概要 https://tournaments.playgwent.com/about ・トーナメントモードフィードバック https://forums.cdproje...
threads用法 在 黃中岳談吉他 Facebook 的最讚貼文
{{ 貳. 談談電吉他相關 }}_05
上週聊到以『IR』技術來取代電吉他音箱『箱體』的相關資訊,這個技術發展的主要取向,應該是為了滿足越來越多的『宅錄』需求,以及在現代化的生活空間,如何讓樂器的練習、工作『音量』能與鄰居保持一種『禮貌的距離』。在這個前提之下,我們得要先認知的一個重要的妥協是:它一定與你『裸聽』的電吉他音箱音色有必然的差異!因為,『裸聽』指的是:你的電吉他加上音箱的整體聲音是靠空氣振動傳送到你的耳朵,而這一類科技產品所服務的後端,通常是『耳機』或是『監聽喇叭』,前者幾乎不太會有足夠的空氣振動,而且 … 我們大概不太會去購買價格等同於音箱箱體的耳機 (我是說,先想一下我們用的是多少錢的耳機) 來執行手上相關的音樂工作;而後者 … 我們選用的監聽喇叭,在單體的尺寸上,大多都小於音箱箱體選用的單體尺寸,因此,想在這樣的聽覺環境差異下去要求這些科技產品要多麼相似於樂器實體,大概就是一種緣木求魚的執念而已。
如果真的要順著這個執念來對比這些器材的音色表現,我覺得,可能你要先『監聽』過『究竟你的音箱錄起來的聲音』是長得如何,才能有比較客觀的依據來進行實質的論證。
而如果你可以隨時隨地都很方便地錄下你音箱的聲音,那 … 我們好像也就不用選擇這些『替代性方案』來妥協些什麼了。
[二. 電吉他相關器材研討]_03
在現今商用市場上,搭配了『IR』技術來滿足『靜音式』宅錄、練習的中、高價主流商品,大概分為兩種派別:一. 類比/數位混合式,譬如 Two notes Torpedo 系列相關產品 (https://www.two-notes.com/en/torpedo-studio ,從高端 2U 機櫃式到地板式各類型),以及 UNIVERSAL AUDIO OX AMP TOP BOX (https://www.uaudio.com/hardware/ox.html )。二. 純數位式,譬如 Kemper Amps (https://www.kemper-amps.com/ ) 與 FRACTAL AUDIO SYSTEM (https://www.fractalaudio.com/ )。
在純數位式器材的領域裡,其實有許多知名品牌去發展了電腦內直接可用的 Plug-in 式 VST/AU 軟體音源 (譬如這個討論串所列舉的: https://theproaudiofiles.com/best-amp-simulator-plugins/ );但這類型的產品會有兩個特徵讓我有些疑慮:其一,通常這些軟體只需要將你的吉他直接插入你的 Sound Card Interface,就可以叫出軟體啓動來使用,我所疑慮的就是『你的 Sound Card Interface』本身在類比/數位的轉換機制 (AD/DA) 夠不夠好。其二,這些軟體通常都在使用你電腦本身 CPU 的運算,如果你同時也在運行 DAW 來錄製這個聲音,對於 CPU 所額外增加的負擔是否會影響效能、進而影響的音色品質,我同樣有所疑慮。在我個人的實際使用上,我通常會選用這些軟體音色的『部份功能』(譬如只單純使用它們的箱體模擬部份、而關掉前後級的模擬運算) 來協助我其他『核心錄音器材』所錄下來的聲音,做一些必要或預期的渲染,而比較不會將這類軟體音源當做『核心錄音音色』。
五年多之前,我曾經在『當代樂手』論壇發表過一篇關於『Two notes Torpedo Live』這個器材的使用心得: https://modernmusician.com/forums/index.php?threads/two-notes-torpedo-live%E8%A9%A6%E7%94%A8%E5%BF%83%E5%BE%97-preamp%E7%AF%87.198424/ ,五年之後來看,雖然市場上各品牌的數位技術突飛猛進,但某種『三分天下』大勢底定的局面似乎還維持著同樣的均勢。不過,這段時間以來我在相關器材的使用經驗上也略有增長,所以想在此做一些小小的意見補充:
1. 關於『Two notes Torpedo Live』~ 雖然這個型號的產品好像在官網的系列產品中消失,但我仍然認為這個器材是我在這類型『靜音式』功能產品中評價最高的選擇。不過,我也實際驗證,如果音箱頭要直接連結這個產品,我會建議還是單純連接前級的部份,而使用 Torpedo Live 的後級管模擬 (Tube Power Amp Sim ),在音色上會比較自然而有彈性。也就是說,雖然這個器材可以直接承受來自音箱頭的後級訊號 (因為本身配置了 Digital Loadbox),但在音色的呈現上,來自音箱頭的真空管音色會顯得有點兒過度壓縮,反而不如器材本身所配置的真空管模擬的那種溫暖、呼吸感。也許,這在 Torpedo 系列中的最高階產品會好一些?不論如何,我會覺得『Live』這個型號,是更趨向於『前級協作』的用途;因此,也許你在音箱頭的選擇上,選擇具有『Preamp Send』的訊號插孔配置的會比較理想。
2. 關於『FRACTAL』~ 這家公司仍然保持著不斷更新韌體的優良傳統!到了號稱『量子運算 (Quantum) 版本 10』的今日技術,在相對來說更難表現的 Low Gain、Clean Tone,都已經比五年前更有顯著的進步。許多玩家在使用這個器材時所感到『電電的』那種感覺,其實是因為這些運算法可能都太想強調它們在『高頻泛音』可以表現得多好,以致於許多音色在高頻都有點兒氾濫。我會建議使用這個器材錄音時,可以從硬體本身、或是從外部 DAW,在 7 kHz 以上做適度的 High Cut --- 你可以想像這樣做會比較能夠去『集中』吉他該有的『中頻特性』,做過這樣的處理之後,你會發現這種『運算型』的器材,事實上能提供的調變幅度與像真度,已經非常理想了。
其次,我會建議你直接用它的『數位輸出』接到你的 Sound card Interface,而不要從『類比輸出』接到聲音介面,以求取最完整的音色直入。另外,因為這個器材所能提供的調變參數真的複雜得可以,我也會建議你可以多在 Youtube 搜尋眾多玩家調整音色時會去關注的細節選項,而不要直接選擇了預設的音色就希望它能為你帶來多麼驚人的仿真度。
譬如這個: https://www.youtube.com/watch?v=gDaJ9cfRYwM
3. 關於『Kemper』~ 這個『照相機』式的高階取樣器材,你很可能會忘記它被設計出來的初衷:你本身有一整組非常優秀的音箱組合,你所調出來的音色就是你日思夜想地那麼完美;可是問題是,它太笨重了!你沒辦法將這整組器材隨身帶著走,所以有了『Kemper』!在經過有點兒可怕但也不會太複雜的取樣動作後 (https://www.youtube.com/watch?v=WTkOSzpfPAI ),你可以帶著這個器材,在任何地方,只要你用的是同一把琴,你都可以完美呈現你當時調出來的音色。
Kemper Profiling Amp 最理想的用法,是取樣你自己的音色來重現。
你一定有過這樣的經驗:拿起別人剛剛彈過的吉他 + 效果器 + 音箱,明明什麼參數都沒有改變,你一彈下去,就是與前一位吉他手彈出來的聲音不一樣。
Kemper Profiling Amp 最引以為傲的,就是在網路世界裡有多到不可勝數的玩家提供了各式各樣厲害的音色 Profile 可以直接分享使用;但這裡面的問題是,你與原取樣者可能用的不是同一把琴,你們彈奏的力度可能也相去甚遠,所以,使用其他人的 Profile,在邏輯上,其實都不是那麼原音重現。
雖然 Kemper 神奇的地方就在於:你還是可以去調整所有必要的音箱參數,但那個功能就好像你可以在你的智慧手機去針對一張照片做各種濾鏡、各種曝光程度種種,去做各種有趣的編輯 --- 只是,它相對於原始的照片,其實是越來越扭曲的。
當然,因為這個取樣器材真的做得非常好,所以,你即使是用了別人的取樣檔案,你還是可以感覺到那種『拳拳到肉』的實在感;我只是想在這裡解釋,這臺機器最理想的應用方式,其實真的是『拷貝你自己』。
4. 關於『OX AMP TOP BOX』~ 雖然我還沒能實際使用過,但在大量觀看相關的示範與使用心得後,我大膽推測,這可能會是非常非常厲害的終極武器!唯一的問題是:如果考量整體的價格 …… 我覺得上面三種器材選項,應該會是比較有人性的方案。
同樣的症狀也發生在 Line 6 Helix (https://line6.com/helix/ ) 這個核子航空母艦上。它無疑絕對是 Line 6 這個品牌的跨世紀黑科技代表作,但從性價比的角度來說,我覺得它會是叫好不叫座的產品 --- 否則,它就不會在這麼短的週期內,必須產出其他許多 Down size 的相關系列產品了!但畢竟他們是 Line 6,所以,很快地,他們就因應了市場的反應,推出了我覺得非常正確產品定位的 HX STOMP (https://line6.com/hx-stomp/ );然而,在 HX STOMP 有機會一統江湖之前,我懷疑中國的相關品牌,非常可能會提出更有競爭力的相關產品 … 譬如這個: http://www.hotoneaudio.com/news/297.html 。
以上。
關於『IR』的相關器材,我個人還是將它們歸類在『錄音』的工作範疇;雖然它們都可以提供到『帶著耳機來練習』的功能,但,我對於『電吉他練習』的相關器材需求,有著略有不同的想法。那些想法,就留待下次再來表述。
threads用法 在 Chris Chan Facebook 的精選貼文
😍出晒名一直堅持逆齡保養嘅我,今次又介紹啲正嘢俾大家!
你知啦~隨着年齡嘅增長,加上地心吸力,要維持緊致V面真係唔容易,尤其嘴邊肌肉,好容易出賣女人🤦🏻♀️
😌但我又唔會花錢做手術,直至我最近發現到呢樣野.......
.
.
🤤👉🏻<非手術無創吊線技術> .
.
.
🤔到底咩叫<非手術無創吊線技術> ? .
.
其實 DermaNeed Silhouette Lifting Pack 係以非手術無創吊線技術,將殼聚醣和三勝肽一齊應用喺皮膚上面,達到卓越嘅緊緻、提升同有抗皺嘅效果!👍🏻.
.
.
無創吊線拉面療程
❎無傷口❎無痛❎無需麻醉❎無副作用,透過塗抹方式可深入滲入皮膚底層,促進產生骨膠原並調節肌底嘅肌肉從而增加更大提升力⬆️⬆️⬆️.
.
.
DermaNeed Silhouette Lifting Pack 無創吊線拉面療程.四大功效.
. ✅改善輪廓
提升輪廓,改善雙下巴 .
.
✅緊緻肌膚
改善面部肌肉下垂問題 .
.
✅淡化細紋
改善粗糙皮膚及皺紋,減淡法令紋、淡化頸紋、額頭和眼睛周圍的細紋 .
.
✅提升整體膚質
緊緻肌膚、收細毛孔,令皮膚恢復彈性
至於個用法都簡單:
1️⃣.將Peptide Solution (肰溶液)倒進Chitosan Threads (手術線球)安瓶中 ,把透明蓋蓋好 ,等待2-4分鐘,混合物形成凝膠。
2⃣️.重點把溶液掃上想要提升和去紋的臉部區域🤭
(如額頭,眼尾,眼袋,臉頰和脖子),以向上的提升動作輕輕按摩💆🏻♀️.
.
3⃣️.等溶液完全吸收,唔需要立即沖洗,再用剩餘整瓶溶液塗抹全臉,眼邊皮膚可用但避免與眼睛接觸🙈
4⃣️.等全部溶液吸收乾透後,徹底沖洗乾淨,咁就完成! 😃☝🏻搽上去嘅時候有少少涼涼地,之後開始覺得有緊致嘅感覺,都係覺得搽咗嘢嘅位置,膚質好柔滑!🤗.
.
. 👑❤️如果你都同我一樣唔想花錢做手術,但係又想靚嘅話,都可以試吓!💪🏻⬆️⬆️⬆️ .
.
😊想買嘅話可以去呢度👉🏻 https://biome.hk/
threads用法 在 バーゲンゾネス Youtube 的最佳解答
☆ジャーニー攻略記事☆
https://bz-games.com/kouryaku/journey-ciri
・トーナメントモード概要
https://tournaments.playgwent.com/about
・トーナメントモードフィードバック
https://forums.cdprojektred.com/index.php?threads/tournament-platform-feedback-bug-megathread.11035598/
◎wiki共有URL(ログインなど不要)
https://docs.google.com/spreadsheets/d/18IXXRCRmWCr53KdvUSxPzo9DPj4Ci7Cj1UlM5XK5kLE/edit?usp=sharing
◎初心者の方向け解説配信
https://youtu.be/-iXH0LaLYMo
サイト、ここから見れます!自分に合う勢力診断できますよ◎
https://bz-games.com
☆★素敵な動画の提供★☆
オクラインタイム様
@okraintime01
バーゲン&ゾネスへの「声」はこちらまで↓↓
◎TwitterのリプやDM(@bargain_zoness)
◎Youtubeのコメントorメッセージ
◎メール:b.z.oubo@gmail.com
<PC向け>デッキ書き込み所
https://docs.google.com/spreadsheets/d/15HoLeY8kGwSKHPUVZICXvPgDoCoDR1T9qOngCRoSEyE/edit?usp=sharing
<情報まとめシート>知識、タル確率などはこちら!
https://docs.google.com/spreadsheets/d/1bUwzApJqkaQjuk4b26EQa2COieAJTUM1kGhG5PB_MaU/edit?usp=sharing
<スマホ&PC向け質問箱>以下のアンケートに回答するだけ☆彡試してみてね(^^)/
https://forms.gle/PmZkVtpAbbHqNYo29
私たち、バーゲン(男)&ゾネス(女)の動画を見ていただきありがとうございます!
Gwentの放送中心でチャンネル登録者1000人を突破しました!
ぜひチャンネル登録をお願いします\(゜ロ\)(/ロ゜)/
Twitterで動画配信情報などもつぶやいていきます!
https://twitter.com/bargain_zoness
ぜひフォローをお願いします☆彡
Welcome to Bargain & Zones' Channel!
Thanks for watching.
We are playing games in Japan.
I am glad if you comment.
We can only speak Japanese, but I will reply in simple English.
Please subscribe to the channel.
Have fun!
~ゲーム情報~
◎ゲームタイトル
Gwent グウェント The Witcher Card Game グウェント ウィッチャーカードゲーム
◎公式サイト:ダウンロードはこちらから
https://www.playgwent.com/ja/
2018年10月23日正式版がリリースしました!
◎DEKKI公式サイト
https://dekki.com/ja/games/gwent?page=1
◎プレイオブザマンスURL
https://www.playgwent.com/ja/play-of-the-month
◎GwentUp
デッキビルダー
https://gwentup.com/deckbuilder/
デッキカタログ
https://gwentup.com/decks/
◎自分でGwentカード作れるサイト
https://gwentgenerator.com/
バーゲン&ゾネスへの「声」はこちらまで↓↓
◎TwitterのリプやDM(@bargain_zoness)
◎Youtubeのコメントorメッセージ
◎メール:b.z.oubo@gmail.com
#グウェント #Gwent #ドラコアーマー過剰
threads用法 在 C CHANNEL Art&Study DIY Crafts Handmade Youtube 的最佳貼文
☆Pattern1
No Glue? No worries, You can use Top coat instead!
☆Pattern2
Paint your hanger with Top coat so that it won’t ruin your clothes or hurt your fingers!
☆Pattern3
Paint on the spot where it has loose threads so that it will hold longer!
☆Pattern4
Prevent having rusts from canned materials on the table by coating the can by top coat!
Hope you enjoyed♡
☆Pattern1
手元に糊がなかった時の代用
☆Pattern2
服や手の傷つき防止
木製ハンガーのささくれに塗って滑らかに!
☆Pattern3
ほつれて取れかけてるボタンに塗って糸を補強
☆Pattern4
缶を置いた場所に錆びの汚れがつかないように、購入時にあらかじめコーティングをする
threads用法 在 美味生活HowLiving Youtube 的最佳解答
★現在就訂閱美味生活頻道,收到第一手的美味資訊:http://bit.ly/1PochtG
★完整食譜請至:http://bit.ly/2BMxRDn
寬粉絲吸滿新鮮大蝦的精華,濃郁的花雕酒香,佐以一整鍋滿滿的海味,好不澎湃!
身為掌管家中廚房的煮夫煮婦,面對滿坑滿谷的食材最怕沒有靈感了,今天KT告訴要大家一鍋就可以煮到底的豪華中式料理,只要擁有一咖鍋,人人都可以當食神!
在常常婚宴或吃年菜時上可以看到的鮮蝦粉絲煲,看似做法繁複,但經過料理簡化女王我(自己講哈哈)的拆解後,只需要四個步驟就可以香噴噴上菜啦,加入花雕酒的粉絲煲香氣更濃郁,吃起來滿足程度完全大躍進,就連一向很克制的老胡都會忍不住多吃好幾碗。
經過煨煮後的一品花雕蝦粉絲煲,只保留微醺酒香,沒有嗆人的酒味,就算是小朋友也可以安心大口吃,滑溜溜的寬粉絲吸收了飽飽湯汁,配著蝦肉每一口都享受,多餘的湯汁用法國麵包沾著吃更是幸福,別跟我講什麼熱量了,不浪費一點一滴的美味才是專業吃貨啊〜
【材料】
麻油……1大匙
蝦……20隻 (約600g)
薑片……1片
大蒜……2瓣,切末
洋蔥……1顆,切絲
花雕酒……0.5杯
雞高湯……1杯
辣豆瓣醬……0.5大匙
糖……1小匙
醬油……1大匙
寬粉絲……1把
蔥花……適量
★完整食譜請至:http://bit.ly/2BMxRDn
【相關影片】
港式脆皮燒肉
https://youtu.be/UGBemrffcds
家傳冰糖紅燒肉
https://youtu.be/Rkq7FBac4Gw
免油炸糖醋排骨
https://youtu.be/ni_8rawZ4fE
★現在就訂閱美味生活頻道,收到第一手的美味資訊:http://bit.ly/1PochtG
【美味生活】
矽谷美味人妻FB:https://www.facebook.com/kthu1031?fre...
美味生活HowLiving FB:https://www.facebook.com/HowLiving1/
美味生活Howliving官網:http://www.how-living.com
美味生活SHOP:http://bit.ly/1kozBuy
★《矽谷美味人妻:一鍋幸福煮》博客來好評熱賣中:http://goo.gl/Vt9YIm
#年菜 #一鍋到底 #蝦食譜