Bít Tất #48: “Thoát kén" trưởng thành
Ngày còn bé thì cứ mong mình mau trở thành người lớn, đến lúc thực sự lớn lên thì không ít người trong chúng ta lại có chút lo lắng, thậm chí sợ hãi khi phải đối mặt với những lo toan, trách nhiệm và bối rối không biết thế nào mới thực sự là "trưởng thành".
Từ góc nhìn tâm lý học, điều gì thôi thúc sự trưởng thành, đâu là dấu mốc xác nhận ta đã trưởng thành? Cùng lắng nghe những chia sẻ từ chị Thùy Minh, Content Director, Long Nguyễn, Head of Client Solution và Miêu Cao, Managing Editor tại Vietcetera trong tập Bít Tất lần này nhé.
▶︎Spotify: https://bit.ly/BT-48-Thoat-ken-truong-thanh-Spotify
▶︎Apple Music: https://bit.ly/BT-48-Thoat-ken-truong-thanh-AP
Cảm ơn Prudential và dự án Hành Trình Học Yêu đã đồng hành cùng tập Bít Tất này. Yêu là một hành trình cần phải học, bởi vậy Prudential và Vietcetera đã cùng tạo nên chuỗi nội dung "Cứ để con!” bao gồm những bài học để hỗ trợ những người con trên quá trình trở thành điểm tựa của bố mẹ. Đọc những bài viết trong series "Cứ để con!” tại đây nhé: https://vietcetera.com/vn/bo-suu-tap/cu-de-con
#Prudential #HocYeubyPrudential
同時也有2部Youtube影片,追蹤數超過2萬的網紅Wilson說給你聽,也在其Youtube影片中提到,搶救爛訊號!無線橋接 中機器 WiFi 分享器訊號 教你如何將一般家用AP改成無線網卡給電視盒以及電腦使用 - Wilson說給你聽 像是電視盒 PC 或是遊戲機像是XBOX, PS5, Switch等因為無線網卡配得很爛 或是根本沒有 所以如果架設在沒辦法佈線的地方 使用上就是不開心 速度很慢 ...
「ap client」的推薦目錄:
- 關於ap client 在 Vietcetera Facebook 的最佳解答
- 關於ap client 在 Kewang 的資訊進化論 Facebook 的精選貼文
- 關於ap client 在 原價屋coolpc Facebook 的最佳貼文
- 關於ap client 在 Wilson說給你聽 Youtube 的精選貼文
- 關於ap client 在 Wilson說給你聽 Youtube 的精選貼文
- 關於ap client 在 [問題] TOTOLINK AP CLIENT和無線中繼差別- 看板Broad_Band 的評價
- 關於ap client 在 請問ap client 無線中繼推薦款 - Mobile01 的評價
ap client 在 Kewang 的資訊進化論 Facebook 的精選貼文
最近 Funliday-旅遊規劃 常發一些精選旅遊回憶的 App 通知給使用者,在去年十一二月的時候發通知 Server 還能撐的了瞬時大流量的 request。
但今年開始發這類通知,總共發了三次,三次都造成 Server 被打掛,而且重開 AP 還緩解不了,瞬間手足無措。大概都要等過了十分鐘左右,Server 才將這些 request 消化完。
這裡就來簡單整理一下時間軸,順便分享一下 Funliday 是如何解決這個問題。
---
* 1/6 1900:系統排程發送精選旅遊回憶的 App 通知
* 1/6 1900+10s 開始:Server 收到極大量的 request
* 1/6 1900+20s:Nginx 出現錯誤訊息 1024 worker not enough,並回傳 http status code 503
* 1/6 1900+25s:PostgreSQL 出現錯誤訊息 could not fork new process for connection (cannot allocate memory)
* 1/6 1900+38s:Node.js 收到 PostgreSQL 的 exception。There was an error establishing an SSL connection error
* 1/6 1900+69s:PostgreSQL 出現錯誤訊息 database system is shut down
* 1/6 1900+546s:PostgreSQL 出現錯誤訊息 the database system is starting up
---
看了時間軸就覺得奇怪,先不論 10s 的時候發了極大量 request,造成 20s 在 Nginx 出現 worker not enough 的錯誤訊息。而是要關注 25s 時的 PostgreSQL 出現 could not fork new process for connection 的錯誤訊息。
Funliday 用了同時可承載 n 個 connection 的資料庫,而且程式碼又有加上 connection pool,理論上根本不該出現這個錯誤訊息。但整個時間軸看下來感覺就是 PostgreSQL 的 capacity 問題,造成系統無法運作。
因為就算將 Nginx 的 worker connection size 再加大 10 倍,只是造成 PostgreSQL 要接受的 request 也跟著被加大 10 倍,但 PostgreSQL 那裡因為 request 變多,原本在 69s 直接關機的時間點只會提早,而無法真正緩解這個狀況。
基於以上狀況,小編就開始回去看自己的程式碼是不是哪裡寫錯了。會這樣想也是覺得 PostgreSQL 應該沒這麼弱,一下就被打掛,一定是自己程式碼的問題 Orz
---
這邊來分享一下自己程式碼的寫法,圖一是原始寫法,在每個 API 都 create 一個 db client instance 來處理該 API 層的所有 db request。這是蠻單純的做法,也是 day 1 開始的處理方式。但有個小問題,就是每個 API 層都要自己 create instance,不好管理,且浪費資源。
後來因為想要做 graceful shutdown 的關係,所以調整了一下 db client instance 的建立方式,用 inject 將 instance 綁在 request 上面,如圖二。這樣只要在 middleware 建立 db client instance 就好,好管理,而且只要有 req 就可以取得 instance,非常方便。而這也是 1/6 時的程式碼,就從這裡開始研究吧。
---
直接切入 node-postgres 的文件,認真讀了一下 pool 有下面兩種使用方式:
1. pool.connect, pool.release:文件寫著 checkout, use, and return,光看描述就應該用這個沒錯。
2. pool.query:適用於不需要 pool 的連線方式,文件上也清楚寫著內部實作是直接 call client.query,所以用了這個方式是完全跟 pool 扯不上邊。
但偏偏小編從 day 1 用的就是第 2 種方式 Orz,雖然看起來應該是寫錯,但也是要修改後實測,才知道是不是真的可以解決問題。
---
如圖三,這是修改後的程式碼。想了一下子,覺得目前在 API 層使用 req.pool.query 還不錯,不想用官方的建議做法:先 create client,然後 query 之後,再使用 release。
如果照官方建議做法,API 層的程式碼會多一堆與商業邏輯無關的程式碼,也不好維護。所以在不想動到 API 層的程式碼,只能使用 monkey patch 的方式來達到這個需求。
monkey patch 可以將原方法利用類似 override 的方式,將整個方法改掉,而不改變 caller 的程式碼,這也是 JavaScript, Ruby, Python 這類動態語言的特性之一,但真的要慎用,一不小心就會把原方法改成完全不同意義的方法了。
所以原本應該要在 API 層實作 connect, query, release 一大堆程式碼,可以用 monkey patch 完美解決這一大堆程式碼。
---
在 dev 壓測後至少 capacity 可以達到原本的 4 倍以上,隔天實際上 production 之後也確實如壓測般的數據,可以承載目前的流量。
其實這篇分享的重點只有一點,文件看仔細才是最重要的事啦!如果沒把文件看仔細,然後開發經驗也不足的話,什麼 RCA、monkey patch 都幫不上忙啦!
---
後記:有夠丟臉,其實完全用不到圖三,只要把圖二的 pool creation 放到最外層就好了,因為 pool.query 的內部實作已經有做 connect, query, release 了。
感謝下面的 Mark T. W. Lin 及 Rui An Huang 的幫忙,實在是太搞笑了 Orz
* Pool 的文件:https://node-postgres.com/features/pooling
* 官方建議寫法:https://node-postgres.com/guides/project-structure
* pool.query 的內部實作:https://github.com/brianc/node-postgres/blob/master/packages/pg-pool/index.js#L332
#expressjs #nodejs #javascript #postgresql
ap client 在 原價屋coolpc Facebook 的最佳貼文
【獨家】雙頻基地台帶著走!TP-LINK TL-WR902AC行動分享器!
http://www.coolpc.com.tw/phpBB2/viewtopic.php?f=52&t=250837
一切都美,就是旅行的意義!
因為帶一台WR902AC去旅行能為你提供穩定的2.4G/5GHz雙頻網路(300+433=AC750),具備6種工作模式,包含Wireless Router、AP、Range Extender、Client、WISP與4G USB modem,所以不管你是在戶外用手機網路分享還是飯店酒店網路延伸分享都行,而且它的USB埠也能為你的和USB設備同時充電,因為雙頻的關係能讓你的高畫質影片和遊戲依然順暢。除了1WAN1LAN和多重網路模式、雙頻之外,WPS、全向天線等也一應俱全,所以其實如果是套房或是較小的環境使用也是可以,或是買來當成備用AP也好,總之我的建議是多一個強而有力的隨身雙頻分享器是必要的啦.... #原價屋促銷
ap client 在 Wilson說給你聽 Youtube 的精選貼文
搶救爛訊號!無線橋接 中機器 WiFi 分享器訊號 教你如何將一般家用AP改成無線網卡給電視盒以及電腦使用 - Wilson說給你聽
像是電視盒 PC 或是遊戲機像是XBOX, PS5, Switch等因為無線網卡配得很爛 或是根本沒有 所以如果架設在沒辦法佈線的地方 使用上就是不開心 速度很慢 因此這邊接紹一個使用一般家用WiFi AP改成橋接模式的方法 將AP作為這些電視盒等地無線網卡喔
Buy WiFi Router from Amazon: https://amzn.to/3gzj7O8
ap client 在 Wilson說給你聽 Youtube 的精選貼文
#WiFi分享器 #無線訊號放大器 #Mesh #無線中繼器 #電力線網路
兩千訂閱解密 無線中繼器 電力線網路 與WiFi Mesh 分佈式路由 WiFi分享器 差別在哪裡? - Wilson說給你聽
時間軸
00:00 開場
01:04 訊號中繼器
05:35 電力線網路
10:00 Mesh WiFi
13:55 綜合分析
16:20 QA
感謝大家支持Wilson的頻道 在前不久突破了兩千訂閱
除了持續新增電腦網路知識相關影片之外
Wilson也會開始針對大家留言的問題
在每一集影片最後做個QA喔
那這一集就是來分享說明很多人會問的一個問題
究竟 無線中繼器 電力線網路 以及Mesh WiFi有什麼差異
要如何進行選購
這邊就讓 Wilson說給你聽
ap client 在 請問ap client 無線中繼推薦款 - Mobile01 的美食出口停車場
請問ap client 無線中繼推薦款 ... 真的要使用最好是固網,如果4G要當固網也可以,但請另外多請一隻,反正一個門號沒幾百,另外加買4G WIFI分享器來使用這樣 ... ... <看更多>
ap client 在 [問題] TOTOLINK AP CLIENT和無線中繼差別- 看板Broad_Band 的美食出口停車場
如題 是這樣的 家裡的電視WIFI接收比較差
後來我買了兩台
TOTOLINK AC5 一台接中華給的小烏龜
另一台用來接收無線信號 然後插線給電視用
目前是可以使用
但這邊的AP CLIENT 模式 還有無線中繼模式 有點搞不懂
我知道一個是把
10.1.1.1 改成 10.1.2.1
另一個是 10.1.1.1 改成10.1.1.2
然後有一個DHCP 啟用 另一個關掉
兩種模式都有試過 都可以上網 但是真的搞不清楚差別
GOOGLE過了以後 還是看不太懂
很希望可以得到解答
拜託了!!
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.171.176.138
※ 文章網址: https://www.ptt.cc/bbs/Broad_Band/M.1482777429.A.442.html
※ 編輯: xxhenryxx (1.171.176.138), 12/27/2016 05:03:53
... <看更多>