<div dir="ltr">Hi,<div><br></div><div>Cảm ơn các bạn đã hỗ trợ.</div><div><br></div><div>Nếu còn thắc mắc nào tiếp mình sẽ nhờ các bạn tư vấn thêm.</div><div><br></div><div>Cảm ơn các bạn.</div></div><div class="gmail_extra"><br><div class="gmail_quote">Vào 17:02 10 tháng 6, 2018, pgvn_support <span dir="ltr"><<a href="mailto:support@postgresql.vn" target="_blank">support@postgresql.vn</a>></span> đã viết:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
  
    
  
  <div text="#000000" bgcolor="#FFFFFF">
    <font size="+2">Hi,</font><span class=""><br>
    <font size="+2"><br>
    </font>
    <div class="m_-3571760460483261805moz-cite-prefix">On 10/06/2018 6:34 CH, Trần Đức Thông
      wrote:<br>
    </div>
    <blockquote type="cite">
      <p dir="ltr">Cảm ơn các bạn đã trả lời mình. </p>
      <p dir="ltr">Việc config lại tham số max_connection thì theo kinh
        nghiệm của admin thì nên sửa thành bao nhiêu? Và ngoài config
        max_connection thì còn có tham số nào nữa không. Mình đọc thì
        thấy cần tham số max_buffersize để tăng dung lượng cache.</p>
    </blockquote>
    <br></span>
    Bạn nên thao khảo thiết kế hệ thống của bạn để điều chỉnh
    max_connections.<br>
    Số lượng cần chỉnh là số lượng connections thực tế có thể kết nối
    tới PostgreSQL <br>
    (bao gồm cả các kết nối liên quan tới quản lý DB từ bạn) + 3 (mặc
    định của superuser_reserved_<wbr>connections).<br>
    <br>
    Thông thường khi thay đổi tham số max_connections bạn nên để ý tới
    resource hệ thống như bên dưới.<br>
    <br>
    [Memory]<br>
    Mỗi một backend process của của PostgreSQL sử dụng khoảng 3MB
    memory.<br>
    Mỗi connection có thể sử dụng = (số lượng sort hay join) * work_mem.<br>
    # trường hợp của bạn không thấy có sort hay join.<br>
    <br>
    [CPU]<br>
    Mỗi connections là một process nên tăng số lượng connections nhiều
    quá (khoảng 1000?), sẽ dẫn đến CPU neck.<br>
    <br>
    PostgreSQL không có tham số max_buffersize.<br>
    Muốn tăng dung lượng buffers bạn có thể thiết lập tham số
    shared_buffers.<br>
    But tham số ngày không trực tiếp liên quan khi điều chỉnh
    max_connections.<br>
    Theo recommend của community thì thiết lập tham số này = 25% memory
    hệ thống.<br>
    But nếu thiết lập bạn cũng phải để ý thêm tham số liên quan tới
    checkpoint như max_wal_size,..<br>
    <br>
    # Với các phiên bản gần đây thì không cần để ý tới các thiết lập về
    OS<div><div class="h5"><br>
    <br>
    <div>Xin cảm ơn,</div>
    <div>— </div>
    <div>Together we work better </div>
    <div>Cộng đồng PostgreSQL Việt Nam</div>
    <blockquote type="cite">
      <p dir="ltr">Việc custom cấu hình mặc gồm những tham số nào nhờ
        admin chỉ dõ thêm.</p>
      <p dir="ltr">Thank admin.</p>
      <div class="gmail_quote">On Jun 10, 2018 15:53, "pgvn_support"
        <<a href="mailto:support@postgresql.vn" target="_blank">support@postgresql.vn</a>> wrote:<br type="attribution">
        <blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
          <div text="#000000" bgcolor="#FFFFFF"> Hi,<br>
            <br>
            On 09/06/2018 9:07 CH, Trần Đức Thông wrote:<br>
            <blockquote type="cite">
              <div dir="ltr">Xin bạn,
                <div><br>
                </div>
                <div>Mình hiện tại đang sử dụng PostgreSQL vào trong
                  công việc. Tuy nhiên hiện giờ mình gặp một bug mà chưa
                  giải quyết được. Nhờ các bạn tư vấn giúp. Chi tiết như
                  sau</div>
                <div><br>
                </div>
                <div>
                  <p style="margin:6px 0px;font-family:Helvetica,Arial,sans-serif;color:rgb(29,33,41);font-size:14px;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial">Phiên
                    bản PostgreSQL 10</p>
                  <p style="margin:6px 0px;display:block;font-family:Helvetica,Arial,sans-serif;color:rgb(29,33,41);font-size:14px;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial">Mình
                    có thực hiện một test như sau.<span> </span><span class="m_-3571760460483261805m_-7609154507309799958gmail-text_exposed_show" style="display:inline;font-family:inherit"><br>
                      1. Tạo một Table có 4 cột, và insert vào đó 1120
                      bản ghi.</span></p>
                  <div class="m_-3571760460483261805m_-7609154507309799958gmail-text_exposed_show" style="display:inline;font-family:Helvetica,Arial,sans-serif;color:rgb(29,33,41);font-size:14px;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial">
                    <p style="margin:0px 0px 6px;font-family:inherit">2.
                      Viêt một web api sử dụng thư viện<span> </span><a class="m_-3571760460483261805m_-7609154507309799958gmail-_58cn" href="https://www.facebook.com/hashtag/npgsql?source=feed_text" style="color:rgb(54,88,153);text-decoration:none;font-family:inherit" target="_blank"><span class="m_-3571760460483261805m_-7609154507309799958gmail-_5afx" style="direction:ltr;unicode-bidi:isolate;font-family:inherit"><span class="m_-3571760460483261805m_-7609154507309799958gmail-_58cl m_-3571760460483261805m_-7609154507309799958gmail-_5afz" style="unicode-bidi:isolate;color:rgb(54,88,153);font-family:inherit">#</span><span class="m_-3571760460483261805m_-7609154507309799958gmail-_58cm" style="font-family:inherit">Npgsql</span></span></a><span> </span>tạo
                      kết nối đến db vào execute một function. Function
                      này thực hiện một nhiệm vụ đơn giản là trả ra hết
                      các bản ghi của table trên.</p>
                    <p style="margin:6px 0px;font-family:inherit">3. Sử
                      dụng jemeter load test vào function trên. Với tham
                      số Number Of Theard = 200, Ramp-Up = 0, Loop Count
                      = 5.</p>
                    <p style="margin:6px 0px;font-family:inherit">4. Kết
                      quả xảy ra lỗi "sorry, too many clients already"
                      -> check trong db thấy số connection đang mở là
                      105. Trong khi theo config của PostgreSql
                      max-connection = 100.</p>
                  </div>
                </div>
              </div>
            </blockquote>
            Số connections hiện tại trên PostgreSQL có thể xem từ view
            pg_stat_activity của PostgreSQL.<br>
            <br>
            max_connections không tính số lượng worker process (như
            background worker, autovacuum launcher, ...).<br>
            Nên có trường hợp số lượng rows trong pg_stat_activity trả
            về giá trị lớn hơn max_connections.<br>
            <br>
            Ở phiên bản 10, có một số connections không được tính cho
            max_connections cũng hiện thị trong pg_stat_activity như:<br>
            background writer, checkpointer, walwriter.<br>
            Nên giá trị connection đang mở có thể có giá trị 105 như bạn
            xác nhận.<br>
            <br>
            <blockquote type="cite">
              <div dir="ltr">
                <div>
                  <div class="m_-3571760460483261805m_-7609154507309799958gmail-text_exposed_show" style="display:inline;font-family:Helvetica,Arial,sans-serif;color:rgb(29,33,41);font-size:14px;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial">
                    <p style="margin:6px 0px;font-family:inherit">Mình
                      không có nhiều kinh nghiệm với sql nên nhờ mọi
                      người tư vấn giúp. Với 2 câu hỏi như sau.</p>
                    <p style="margin:6px 0px;font-family:inherit">1. Tạo
                      sao lại xảy ra hiện tượng mở nhiều connection (sao
                      connection pool k được dùng đến) trong chuỗi
                      Connection string đã có tham số Pooling = true</p>
                  </div>
                </div>
              </div>
            </blockquote>
            <br>
            Chức năng connection pooling bạn nói là ở phía npgsql, không
            phải bên PostgreSQL.<br>
            Nên mình chỉ có thể trả lời khái quát như bên dưới.<br>
            Để tìm hiểu cụ thể bạn tham khảo documents (hoặc source)
            phía npgsql.<br>
            <br>
            Thông thường vì PostgreSQL sử dụng mỗi process cho một kết
            nối, <br>
            nên ở một số Driver có chức năng pool connection (hoặc tạo
            kết nối trước (prefork)) <br>
            để giảm overhead khi có kết nối mới.<br>
            <br>
            Bạn có thể chỉnh số lượng connections pool ở phía driver.<br>
            <br>
            <blockquote type="cite">
              <div dir="ltr">
                <div>
                  <div class="m_-3571760460483261805m_-7609154507309799958gmail-text_exposed_show" style="display:inline;font-family:Helvetica,Arial,sans-serif;color:rgb(29,33,41);font-size:14px;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial">
                    <p style="margin:6px 0px;font-family:inherit">Câu 2.
                      Tại sao khi postgresql đã max connection -> các
                      request sau không được được cho vào queue đợi khi
                      thực khi xong các request hiện tại mới tiếp tự
                      thưc thi các request mới. Mà theo hiên tại
                      postgresql vẫn cố mở thêm conneciton mới dẫn đến
                      xảy ra lỗi trên</p>
                  </div>
                </div>
              </div>
            </blockquote>
            <br>
            Lỗi "sorry, too many clients already" là phía PostgreSQL trả
            về, khi số lượng kết nối yêu cầu lớn hơn max_connections.<br>
            but PostgreSQL không tự mở thêm kết nối. Mở kết nối là do
            phía npgsql.<br>
            PostgreSQL cũng không có cơ chế queue để chứa các kết nối. <br>
            <br>
            Bạn nên xem lại hệ thống bạn có mở kết nối khác ngoài npgsql
            không (Ví dụ như cho mornitoring?) và <br>
            điều chỉnh lại max_connections (postgresql.conf) hoặc Max
            pool size (npgsql) cho đúng.<br>
            <br>
            <blockquote type="cite">
              <div dir="ltr">
                <div>
                  <div><img src="cid:part3.E3EC9209.9F52FEAC@postgresql.vn" height="267" width="412"><br>
                  </div>
                  <div><img src="cid:part4.4B342237.C928959E@postgresql.vn" height="179" width="412"><br>
                  </div>
                  <div><img src="cid:part5.C3701C66.5486919D@postgresql.vn" height="239" width="412"><br>
                  </div>
                  <div><img src="cid:part6.7EC0B6C9.6E788033@postgresql.vn" height="151" width="412"><br>
                  </div>
                  <div><img src="cid:part7.83B7325E.9FBB3F88@postgresql.vn" height="155" width="412"><br>
                  </div>
                  ​</div>
                <div>
                  <div>Nhờ các bạn tư vấn giúp.</div>
                  <div><br>
                  </div>
                  <div>Mình xin cảm ơn.</div>
                  <div class="m_-3571760460483261805m_-7609154507309799958gmail_signature" data-smartmail="gmail_signature">
                    <div>------------------------------<wbr>------------------------------<wbr>------------------------------<wbr>-------
                    </div>
                    <b><font color="#cc0000">Tran Duc Thong</font></b>
                    <div>Software engineering</div>
                    <div>Mobile: 0989 452 004</div>
                    <div>Email: <a href="mailto:humg.thongit@gmail.com" target="_blank">humg.thongit@gmail.com</a></div>
                  </div>
                </div>
              </div>
            </blockquote>
            <br>
            <div>Xin cảm ơn,</div>
            <div>— </div>
            <div>Together we work better </div>
            <div>Cộng đồng PostgreSQL Việt Nam</div>
            <br>
            <br>
          </div>
        </blockquote>
      </div>
    </blockquote>
    <br>
  </div></div></div>

</blockquote></div><br><br clear="all"><div><br></div>-- <br><div class="gmail_signature" data-smartmail="gmail_signature"><div>-------------------------------------------------------------------------------------------------
</div><b><font color="#cc0000">Tran Duc Thong</font></b><div>Software engineering</div><div>Mobile: 0989 452 004</div><div>Email: <a href="mailto:humg.thongit@gmail.com" target="_blank">humg.thongit@gmail.com</a></div></div>
</div>