vue $emit

vue $emit

 子(對話窗)

  <div>
      <v-row justify-end>
        <v-btn icon dark @click="close" class="mt-10" color="teal"> <v-icon>mdi-close</v-icon> </v-btn>
      </v-row>
    </div>

 methods: {
    close() {
      this.$emit('closeRegist');
    },
}


父(頁面)

  <v-dialog persistent v-model="RegistDialoge" >
      <v-card > >
        <register @closeRegist="closeRegistDialog"></register>
      </v-card>
    </v-dialog>

RegistDialoge: false,
 methods: {
    closeRegistDialog() {
      this.RegistDialoge = false;
    },
}

 原理是:當子元件的按鈕被觸發(想要關掉對話窗)時,會對父元件出發$emit('closeRegist');,項父元件申請說[子元件提出這個事項],父元件就會去[找到@closeRegist這個事項],並執行觸發事件closeRegistDialog(關掉對話窗),任務完成。

Timeout expired. The timeout period elapsed prior to obtaining a connection from the pool. This may have occurred because all pooled connections were in use and max pool size was reached. 超时时间已到。超时时间已到,但是尚未从池中获取连接。出现这种情况可能是因为所有池连接均在使用,并且达到了最大池大小。

Timeout expired.  The timeout period elapsed prior to obtaining a connection from the pool.  This may have occurred because all pooled connections were in use and max pool size was reached.    超时时间已到。超时时间已到,但是尚未从池中获取连接。出现这种情况可能是因为所有池连接均在使用,并且达到了最大池大小。

 

 Timeout expired.  The timeout period elapsed prior to obtaining a connection from the pool.  This may have occurred because all pooled connections were in use and max pool size was reached.

 超时时间已到。超时时间已到,但是尚未从池中获取连接。出现这种情况可能是因为所有池连接均在使用,并且达到了最大池大小。

前提:程式已經有close&dispose

可能發生的問題:


這個錯誤通常跟應用程式的兩個地方有關:

  1. 資料庫連線字串所使用的 connection pool 參數。
  2. 程式的寫法有問題,導致資料庫連線沒有盡快釋放,以至於連線池爆滿。

此錯誤訊息很容易就可以重現。例如,你可以寫個程式,裡面用一個迴圈不斷開啟新的資料庫連線,但都不要釋放它。很快地,例如開啟 100 個連線之後,就會出現這個錯誤訊息。

引用 https://www.huanlintalk.com/2012/05/net-connection-pool.html


監測效能監視器Connection Pool

 https://dotblogs.com.tw/rainmaker/2017/04/26/143316

[code Connection Pool行為]

  • 1.連線字串要完全相同才能共享 Pool,故要避免動態產生不同連線字串以免搞出一堆 Pool 失去共用資源的意義(術語叫 Pool Fragmentation)
  • 2.Pool 最大連線數(Max Pool Size)預設為 100 條
  • 3.Pool 連線數達上限時需排隊等待,若逾時將拋出錯誤,預設等待上(Connection Timeout)限為 15 秒
  • 4.最低連線數(Min Pool Size)是每個 Pool 維持的基本連線數(低消),預設為 0
  • 5.Pool 中的連線若閒置 4-8 分鐘或發生斷線(Severed Connection),將被從 Pool 移除。

https://blog.darkthread.net/blog/sql-conn-pooling-experiment/

[C#] SQL 資料庫 Connection Pool 連線池觀念釐清

https://ithelp.ithome.com.tw/articles/10210068

[觀念]

超时时间已到.错误及Max Pool Size设置

https://www.cnblogs.com/delphinet/archive/2010/09/29/1838494.html

連線池機制

https://www.cnblogs.com/eaglet/archive/2011/10/31/2230197.html

Connection Pool (連線池)

https://vocus.cc/article/5f800406fd89780001365d17

dispose()與close()的區別 及pooling連線池相關

https://www.itread01.com/content/1542172150.html

連線池错误的解决方案:

https://www.cnblogs.com/kerrycode/p/12502884.html

已超過連接逾時的設定。在取得集區連接之前超過逾時等待的時間,可能的原因為所有的共用連接已在使用中,並已達共用集區大小的最大值。

https://www.gss.com.tw/blog/1-8
 Connection 有2個 Clear Pool 的 Method,
一個是 ClearAllPools() ,另一個是 ClearPool(你的Connection) 。..

Connection Pool 是什麼呢 ?[運作]

原文網址:https://read01.com/0M7EM.html
https://read01.com/zh-tw/0M7EM.html#.YgDhqepByUk



💬統整:
釋放連線、釋放連線池連線應該是兩件事,
所以即使已經做到conn.close(); conn.dispose();也可能生連線池過滿的問題
因此我的問題應是出在連線池中的連線並未被重複使用,每次動作都建立新的連線而使連線池過滿。
(排除問題一)但我的連線字串connrction string放在appsettings裡,連線字串理應完全相同,原因待查....
💬暫時解決方法:
直接把Pool=False;目前沒發生過滿 
(但ConnectionPool是為了效能,即使關了電腦端口的連線數也是有限的->也是可能爆掉,所以這部是解決方法)
💢嘗試調整
;Max Pool Size=5;Connection Lifetime=20;(讓連線會再時間內斷開並移出連線池)
發現同一頁面重新整理5次後,第六次timeout了,且理應20秒後會釋放Connection ,但重整仍然timeout,等了20分鐘都沒回來
(使否可能連線被占用,if占用中的connection部會被移除?)
(連線沒有被正常關閉!)
 
💬最後解決方法:
using還是using一直不面對改寫成using(不熟所以原本怎麼改也錯)
SqlConnection cn = null; 
using ( cn = new SqlConnection(this.Connection.ConnectionString)) {
 // SQL操作
 }
https://ithelp.ithome.com.tw/articles/10199186