#純靠北工程師51r
----------
今天上版到Test Server的時候,發現AP Service一直噴DB的Connection Error,我以為是設定檔還是Code哪邊沒調整好,有BUG,整個Code跟設定檔都Code Review了好幾遍,於是把Test Server跟AP Service都重開,還是持續的噴Connection Error。
因上禮拜甲方的設備有進行月維護,想說他們有沒有可能動到什麼相關的安全設定,後來跟甲方的網管確認,他們並沒有調整DB相關的安全性設定。
最後發現BUG在於甲方的系統負責人,把Test Server與Test DB連線的實體防火牆,
憑證註銷了!
憑證註銷了!
憑證註銷了!
P.S. 這台Test Server工作日都會用到,不知道甲方的系統負責人腦洞怎麼開的。
----------
💖 純靠北官方 Discord 歡迎在這找到你的同溫層!
👉 https://discord.gg/tPhnrs2
----------
💖 全平台留言、文章詳細內容
👉 https://init.engineer/cards/show/6543
同時也有3部Youtube影片,追蹤數超過64的網紅阿凡 Evan Joe,也在其Youtube影片中提到,#Relacart力卡 #Mi1 #非工商 #純購買心得 終於能擺脫錄完影片還要後製錄音的痛苦了!省去的時間可以來玩遊..(拍更多影給大家) 它究竟有什麼樣的魔力,讓我在這部影片裡來為你解答吧 - - - 這個系列主要會分享一些自己覺得新奇好玩的「玩具」,也歡迎大家在下方留言去分享給我你覺得很...
「db connection」的推薦目錄:
- 關於db connection 在 純靠北工程師 Facebook 的最佳貼文
- 關於db connection 在 Kewang 的資訊進化論 Facebook 的最佳解答
- 關於db connection 在 純靠北工程師 Facebook 的精選貼文
- 關於db connection 在 阿凡 Evan Joe Youtube 的精選貼文
- 關於db connection 在 iMoD Official Youtube 的最讚貼文
- 關於db connection 在 ชาญชัย กินให้อ้วนรวย Youtube 的精選貼文
- 關於db connection 在 Connect to the Database with DbConnection, SqlConnection ... 的評價
- 關於db connection 在 elixir-ecto/db_connection: Database connection behaviour 的評價
- 關於db connection 在 LINQ to DB | Linq To DB (aka linq2db) 的評價
- 關於db connection 在 Using Splunk DB Connect - YouTube 的評價
db connection 在 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
db connection 在 純靠北工程師 Facebook 的精選貼文
#純靠北工程師3s3
----------
上個月在code review時,發現了一些事情......
狀況一:程式DB連接用sa帳號連線?!
狀況二:存取DB的方式,竟然是連同參數串成string然後帶入sqlconnect內?!
狀況三:沒有使用connection Pool,詢問這樣速度有沒有問題,答案是:還好阿,沒有感覺
是我太敏感,還是太落伍?
----------
🗳️ [群眾審核] https://kaobei.engineer/cards/review
👉 [GitHub Repo] https://github.com/init-engineer/init.engineer
📢 [匿名發文] https://kaobei.engineer/cards/create
🥙 [全平台留言] https://kaobei.engineer/cards/show/4899
db connection 在 阿凡 Evan Joe Youtube 的精選貼文
#Relacart力卡 #Mi1 #非工商 #純購買心得
終於能擺脫錄完影片還要後製錄音的痛苦了!省去的時間可以來玩遊..(拍更多影給大家)
它究竟有什麼樣的魔力,讓我在這部影片裡來為你解答吧
- - -
這個系列主要會分享一些自己覺得新奇好玩的「玩具」,也歡迎大家在下方留言去分享給我你覺得很酷的玩意兒,我會親自去購買,並開箱實測給大家看,喜歡我的影片記得要訂閱+分享喔!
- - -
■ 工作合作邀约請洽我的INSTAGRAM:
https://www.instagram.com/joe880106/
■ 我的Facebook
https://www.facebook.com/profile.php?id=100003556216261
■音樂
Chill R&B Guitar Type Beat ''Connection''
db connection 在 iMoD Official Youtube 的最讚貼文
จะซื้อหุ่นยนต์ดูดฝุ่นทั้งที รุ่นไหนดี รุ่นไหนคุ้ม มีฟังก์ชันอะไรบ้าง แต่ละรุ่นแตกต่างกันยังไง วันนี้ iMOD มีคำตอบมาให้แล้ว ในรีวิวนี้มีหุ่นยนต์ดูดฝุ่นตัวอย่างจาก #MisterRobot มาให้ชม 3 รุ่น ได้แก่
00:00 - Intro
✅ 1. หุ่นยนต์ดูดฝุ่นและถูพื้น Mister Robot รุ่น HYBRID WIFI 0:34
.
- "หุ่นยนต์ดูดฝุ่น" และ "หุ่นยนต์ถูพื้น" มาไว้ในเครื่องเดียว ที่จะช่วยยกระดับคุณภาพชีวิตของคุณให้ ง่ายยิ่งกว่าเดิม
- ด้วยเทคโนโลยีสุดล้ำ เพียงแค่ถอดกล่องเก็บฝุ่นออกแล้วใส่แท๊งค์น้ำเข้าไปแทนที่ เครื่อง จะปรับโหมดจาก "หุ่นยนต์ดูดฝุ่น" เป็น "หุ่นยนต์ถูพื้น" โดยอัตโนมัติ
- มาพร้อมกล่องเก็บฝุ่นและแท๊งค์น้ำความจุ 300 ml.
- Lithium-Ion Battery ความจุ 2600 mAh สามารถทำงานได้ต่อเนื่องยาวนานสูงสุดถึง 180 นาที
- เทคโนโลยี Edge Detective Sensor ป้องกันการตกจากที่สูง
- เทคโนโลยี Navigator Sensor หลบหลีกสิ่งกีดขวาง
- แปรงหลักแบบ Spiral Rotating Brush ช่วยเก็บกวาดสิ่งสกปรกไปหมดจดยิ่งกว่าเดิม
- Silent Design Mister Robot HYBRID ทำงานด้วยเสียงเบาเพียง 56 dB
- เดินผ่านพื้นที่ต่างระดับได้ถึง 15 มม.
- Auto Charging Mode สามารถกลับแท่นชาร์จเองได้เมื่อแบตเตอรี่ใกล้หมด
- Timing Program ตั้งเวลาการทำงานล่วงหน้าได้
- ผ้าถู Micro Fiber ขนาด Super Jumbo เพิ่มประสิทธิภาพในการถูพื้น สามารถถอดซักและใช้ซ้ำได้
- Remote Control เพื่อความสะดวกสบายในการควบคุม
- ครอบคลุมพื้นที่ได้ 120 - 150 ตรม.
- มีโปรแกรมทำความสะอาด AUTO/ SPOT/ ALONG WALL/ TIMING
.
✅ 2. หุ่นยนต์ดูดฝุ่น ถูพื้นและซักผ้าถูได้เองอัตโนมัติ Mister Robot x Veniibot รุ่น N1MAX 3:14
.
หุ่นยนต์ดูดฝุ่นและถูพื้นได้ในเวลาเดียวกันทั้งยังซักผ้าถูกพื้นได้เองด้วยระบบอัตโนมัติ มาพร้อมระบบนำ LiDAR SLAM เดินทำความสะอาดทั่วถึงทุกซอกทุกมุม ไม่ว่าจะดูดฝุ่น หรือ ถูพื้น ก็ไม่ทำให้คุณผิดหวังอย่างแน่นอน
- ใหม่ล่าสุด!! ฟังก์ชั่นซักผ้าถูอัตโนมัติแล้วกลับไปถูพื้นต่อ ด้วยระบบไฮดรอลิกที่มีแรงกดสูงถึง 40N (นิวตัน) ทำให้ซักผ้าถูได้สะอาดเปรียบเสมือนคนซัก
- พัฒนาการถูพื้นให้ใกล้เคียงกับคนถูมากที่สุดด้วยการออกแบบให้มีแรงกดในการถูพื้นสูงถึง 10N เพื่อช่วยขจัดคราบสกปรกบนพื้นบ้านได้สะอาดหมดจดมากยิ่งขึ้น
- สะดวกยิ่งขึ้นด้วยการเชื่อมต่อ WiFi สั่งงานผ่านแอปพลิเคชันในมือถือ
- เลือกขนาดพื้นที่ในการถูพื้น ต่อการซักผ้าถู 1 ครั้งได้ตั้งแต่ 5-40 ตร.ม.
- ปรับระดับแรงดูดได้ถึง 4 ระดับ โดยระดับสูงสุดจะมีแรงดูดสูงถึง 2000pa
- สามารถบันทึกแผนที่ได้สูงสุดถึง 3 แผนที่ เพื่อปรับแต่งการทำความสะอาดในครั้งถัดไป ทั้งการแบ่งกันพื้นที่ / เลือกห้อง / แบ่งโซนในการทำความสะอาด
- ติดตามการทำความสะอาดได้แบบ Real Time
- ตั้งเวลาทำความสะอาดอัตโนมัติได้ตามต้องการ
- แบตเตอรี่ Li-Ion 5,200 mAh ทำความสะอาดต่อเนื่องได้สูงสุดถึง 120-150 นาที
- ถุงใส่ฝุ่นขนาดใหญ่พิเศษถึง 1000 ml. ใหญ่กว่าหุ่นยนต์ดูดฝุ่นทั่วไปถึง 2 เท่า
- มาพร้อมแท๊งค์น้ำความจุถึง 800 มล. ทั้ง แท๊งค์น้ำใหม่และแท๊งค์น้ำทิ้ง ซักผ้าถูได้สะอาดพร้อมขจัดคราบสกปรกบนพื้นบ้านคุณได้อย่างเต็มที่ตลอดการทำงาน
- เหมาะสำหรับผู้ที่ต้องการทำความสะอาดในการดูดฝุ่นและถูกพื้นให้คราวเดียวกัน ข้อดีคือแรงดูดฝุ่นและแรงถูพื้นทำได้ดีมาก ผ้าที่ถูกพื้นเสร็จสามารถซักทำความสะอาดได้เองโดยที่ผู้ใช้ไม่ต้องออกแรง
- ข้อเสียไม่สามารถลอกใต้โซฟาได้
.
✅ 3. หุ่นยนต์ดูดฝุ่น ถูพื้นและทำความสะอาดตัวเองได้อัตโนมัติ Mister Robot รุ่น SELF-CLEAN LASER 6:17
.
- เป็น "หุ่นยนต์ดูดฝุ่น" และ "หุ่นยนต์ถูพื้น" มาไว้ในเครื่องเดียวกันและมาพร้อมฟังก์ชันทำความสะอาดถังเก็บฝุ่นด้วยตัวเอง
- ทุกครั้งที่ทำความสะอาดเสร็จเครื่องจะกลับมาที่แท่นชาร์จ ที่เป็นแท๊งค์เก็บฝุ่นในตัว มาพร้อมแรงดูด 30,000 pa ดูดเอาฝุ่นจากกล่องฝุ่นในตัวหุ่นยนต์ขึ้นมาอยู่ในแท๊งค์เก็บฝุ่น
- ถุงเก็บฝุ่นในแท๊งค์เก็บฝุ่นขนาดใหญ่ความจุ 4,500 มล. (ใหญ่กว่ากล่องเก็บฝุ่นของหุ่นยนต์ดูดฝุ่นทั่ว ๆ ไป ถึง 9 เท่า)
- ถุงเก็บฝุ่นของ Self Clean ราคา 280 บาท ได้ทั้งหมด 3 ชิ้น
- แสกนพื้นที่ด้วยระบบ Lidar Sensor ที่สแกนได้ละเอียดทุกซอกทุกมุม
- แบตเตอร์รี่ Lithium-Ion ความจุ 5,200 mAh สามารถทำงานได้ต่อเนื่องยาวนานสูงสุดถึง 120-150 นาที
- WiFi Connection ติดตามการทำงาน และสั่งงานผ่านแอปพลิเคชันบนมือถือ ได้ทุกที่ทุกเวลา
- Charging Mode สามารถกลับแท่นชาร์จเองได้เมื่อแบตเตอรี่ใกล้หมด
- เทคโนโลยี Edge Detective Sensor ป้องกันการตกจากที่สูงและมีเทคโนโลยี Navigator Sensor หลบหลีกสิ่งกีดขวาง
- เดินผ่านพื้นที่ต่างระดับได้ถึง 15 มม.
- Timing Program สามารถตั้งเวลาการทำงานล่วงหน้าได้
- ตัวเครื่องสามารถครอบคลุมพื้นที่ได้ถึง 120 - 150 ตร.ม
- เหมาะสำหรับผู้ที่ไม่ค่อยได้อยู่ห้องบ่อย ๆ ใช่ กลับมาห้องอาทิตย์ละครั้งหรือเดือนละครั้ง หุ่นยนต์นี้จะคอยดูฝุ่นและถูกพื้นให้ทุกวันตามต้องการ แถมมือเราไม่ต้องเปื้อนฝุ่นเพราะหลังจากฝุ่นเต็มถังเก็บแล้วสามารถทิ้งได้ทันที
ประโยชน์ของการทำความสะอาดตัวเอง คือ เมื่อกล่องฝุ่นถูกทำความสะอาดโดยการดูดฝุ่นออกไปไว้ที่แท๊งค์ฝุ่น จะทำให้ฝุ่นไม่อุดตันอยู่ในกล่องฝุ่นและ filter และทำให้กล่องฝุ่นมีพื้นที่ในการรองรับฝุ่นใหม่ที่จะดูดเข้าไป จึงสามารถดูดฝุ่นได้อย่างเต็มประสิทธิภาพ เพราะเวลาที่ใช้งานจริง น้อยคนนักที่จะถอดเอากล่องฝุ่นไปเททิ้งด้วยตัวเองทุกวัน เรียกว่าเจ้าหุ่นยนดูดฝุ่นตัวนี้มันทำแทนคุณให้แล้วนั่นเอง คุณก็ไม่ต้องกังวลแล้วว่า กล่องฝุ่นจะเต็ม จะตัน แล้วจะดูดฝุ่นไม่ขึ้น เดือน-สองเดือง ก็มาเอาถุงฝุ่นจากตัวแท๊งค์เนี่ยไปทิ้งทีนึง (ระยะเวลาก็จะขึ้นอยู่กับการใช้งาน)
⁉️? ดูรายละเอียดสินค้าจาก Mister Robot เพิ่มเติมได้ที่ https://bit.ly/misterrobotofficialstore
#MisterRobot #หุ่นยนต์ดูดฝุ่น #หุ่นยนต์ดูดฝุ่นและถูพื้น #iMoD
db connection 在 ชาญชัย กินให้อ้วนรวย Youtube 的精選貼文
Features:
Simplify network troubleshooting using LinkMap™ with Pass/Fail!
34 dB dynamic range with best-in-class dead zones (0.8 / 3.5 m)
Includes OTDR / PON OTDR, Source, Power Meter, VFL
ServiceSafe™ live fiber FTTx PON OTDR with integrated PON Power Meter
Show More
Applications:
Construction testing of FTTx PONs and point-to-point metro and access networks
High-resolution fault-location of dark or live FTTx fibers
Splice and connection verification (loss and reflectance)
Optical power and loss measurement with time-saving Wave ID
db connection 在 elixir-ecto/db_connection: Database connection behaviour 的推薦與評價
Database connection behaviour. Contribute to elixir-ecto/db_connection development by creating an account on GitHub. ... <看更多>
db connection 在 LINQ to DB | Linq To DB (aka linq2db) 的推薦與評價
At this point LINQ to DB doesn't know how to connect to our database or which POCOs go with what database. All this mapping is done through a DataConnection ... ... <看更多>
db connection 在 Connect to the Database with DbConnection, SqlConnection ... 的推薦與評價
... <看更多>