modülünüzü gözden geçirerek bu hatayı tekrar etmemesini sağlamanızı
tavsiye ederim...


On Mon, Mar 30, 2009 at 9:33 AM, Bayram Karagoz
<karagoz.bay...@gmail.com> wrote:
>
>
>
>
>
> İkinci ihtimalde bahsedilen "open_idle_transaction_timeout" gibi bir
> değişkenin ileride eklenmesinin düşünüldüğü. Ama atlamış
> olabileceğiniz asıl nokta burada kullandığınız yazılımın
> "transactionların" bir kısmını gereksiz yere "idle" tuttuğudur.
>
> teşekkürler kerem bey,
>
> idle in transaction süreçleri sistemimde bir modülün açmış olduğu
> süreçlerdir. bu süreçlerden birini kill ettiğim
> zaman diğerleri de otomatik olarak kill oldu ve slony de problem yok gibi
> görünüyor. fakat modülleri her restart edişimde bu süreçler
> tekrardan çalışmaya başlıyor. geçici bir çözüm bulduk ama daha optimum
> çözümlere de açığım.
>
>
> On Fri, 2009-03-27 at 15:11 +0200, Kerem Erciyes wrote:
>
> Merhaba,
>
> İkinci ihtimalde bahsedilen "open_idle_transaction_timeout" gibi bir
> değişkenin ileride eklenmesinin düşünüldüğü. Ama atlamış
> olabileceğiniz asıl nokta burada kullandığınız yazılımın
> "transactionların" bir kısmını gereksiz yere "idle" tuttuğudur.
>
> Kolay Gelsin,
> Kerem
>
>
>
>
> On Thu, Mar 26, 2009 at 10:14 AM, Bayram KARAGOZ
> <bayram.kara...@empatiq.com> wrote:
>>
>> merhaba
>>
>> freebsd üzerine kurulu iki farklı sunucudaki iki ayrı postgresql
>> veritabanını slony ile replikasyon işlemine tabii tuttum. replikasyonun
>> yapılmasında herhangi bir problem yok. master sunucuda yaptığım her türlü
>> işlem anında slave veritabanına da ekleniyor. fakat bir süre sonra master
>> sunucuda cpu ve io yükselmesi meydana geliyor. süreçleri incelediğimde
>> master üzerinde çalışan bir processin bu probleme sebep olduğunun farkına
>> vardım. bu süreç sürekli çalıştığı zaman veritabanına yapılan diğer
>> sorgularda takılmalar meydana geliyor ve bazen sorgu cevapları çok geç
>> geliyor. bu süreci sonlandırdığım zaman tekrar sunucu eski haline dönüyor
>> fakat replikasyon işlemi hata veriyor. çalışan süreç aşağıda
>> gösterilmektedir.
>>
>> ön bilgi;
>>
>> master sunucu ip : 10.0.10.231
>> slave sunucu ip    : 10.0.10.232
>>
>>
>> sippy=# SELECT procpid,client_addr, current_query,query_start from
>> pg_stat_activity where current_query NOT LIKE '<IDLE>';
>> procpid | client_addr |
>> current_query                                                    |
>> query_start
>>
>> ---------+-------------+--------------------------------------------------------------------------------------------------------------------+-------------------------------
>>    84329 | 10.0.10.232 | fetch 100 from
>> LOG;
>> | 2009-03-25 13:05:57.007739+02
>>
>>
>> yukarıda gösterilen süreç slave sunucu tarafından gönderilen bir istek
>> olduğu client_addr kısmında gösteriliyor. ( fetch 100 from LOG; ) sorgusuyla
>> alakalı slony FAQ da araştırma yaptığımda bu problemin birkaç sebepten
>> kaynaklanabileceği söyleniyor;
>>
>> >>>>>>>>>>>
>> 14. Some nodes start consistently falling behind
>>
>> I have been running Slony-I on a node for a while, and am seeing system
>> performance suffering.
>>
>> I'm seeing long running queries of the form:
>>
>> fetch 100 from LOG;
>>
>> This can be characteristic of pg_listener (which is the table containing
>> NOTIFY data) having plenty of dead tuples in it. That makes NOTIFY events
>> take a long time, and causes the affected node to gradually fall further and
>> further behind.
>>
>> You quite likely need to do a VACUUM FULL on pg_listener, to vigorously
>> clean it out, and need to vacuum pg_listener really frequently. Once every
>> five minutes would likely be AOK.
>>
>> Slon daemons already vacuum a bunch of tables, and cleanup_thread.c
>> contains a list of tables that are frequently vacuumed automatically. In
>> Slony-I 1.0.2, pg_listener is not included. In 1.0.5 and later, it is
>> regularly vacuumed, so this should cease to be a direct issue.
>>
>> There is, however, still a scenario where this will still "bite." Under
>> MVCC, vacuums cannot delete tuples that were made "obsolete" at any time
>> after the start time of the eldest transaction that is still open. Long
>> running transactions will cause trouble, and should be avoided, even on
>> subscriber nodes.
>> <<<<<<<<<<<<<<
>> anladığım kadarıyla replikasyon işlemiyle alakalı NOTIFY bilgileri sürekli
>> olarak pg_listener tablosunda tutuluyor ve güncelleniyor. bu sebepten bu
>> tabloda dead tuple lar oluşuyor. bu yüzden bu tablonun yaklaşık 5 dk bir
>> vacuum lanması gerektiği söyleniyor. fakat slony 1.0.5 ve sonra versiyonlar
>> bu işi kendisi yapıyor deniyor. benim kullandığım slony versiyonu 1.2.11. bu
>> yüzden bu ihtimalin olması imkansız gibi görünüyor.
>>
>> sippy=# SELECT * from pg_listener ;
>>    relname    | listenerpid | notification
>> --------------+-------------+--------------
>> _ssp_Restart |       85920 |            0
>> (1 row)
>>
>>
>> pkg_version -v |grep slony
>> slony1-1.2.11                       <   needs updating (port has 1.2.15)
>>
>> pkg_version -v |grep postgre*
>> postgresql-client-8.2.5_1           <   needs updating (port has 8.2.12)
>> postgresql-server-8.2.5_2           <   needs updating (port has 8.2.12)
>>
>>
>> 2. neden olarak aşağıdaki ihtimalden bahsediliyor;
>>
>>
>> >>>>>>>>>>>>>>>
>> 25. Replication has been slowing down, I'm seeing FETCH 100 FROM LOG
>> queries running for a long time, sl_log_1 is growing, and performance is,
>> well, generally getting steadily worse.
>>
>>
>> There are actually a number of possible causes for this sort of thing.
>> There is a question involving similar pathology where the problem is that
>> pg_listener grows because it is not vacuumed.
>>
>> Another " proximate cause " for this growth is for there to be a
>> connection connected to the node that sits IDLE IN TRANSACTION for a very
>> long time.
>>
>> That open transaction will have multiple negative effects, all of which
>> will adversely affect performance:
>>
>> Vacuums on all tables, including pg_listener, will not clear out dead
>> tuples from before the start of the idle transaction.
>>
>> The cleanup thread will be unable to clean out entries in sl_log_1 and
>> sl_seqlog, with the result that these tables will grow, ceaselessly, until
>> the transaction is closed.
>>
>> You can monitor for this condition inside the database only if the
>> PostgreSQL postgresql.conf parameter stats_command_string is set to true. If
>> that is set, then you may submit the query select * from pg_stat_activity
>> where current_query like '%IDLE% in transaction'; which will find relevant
>> activity.
>>
>>
>> You should also be able to search for " idle in transaction " in the
>> process table to find processes that are thus holding on to an ancient
>> transaction.
>>
>>
>> It is also possible (though rarer) for the problem to be a transaction
>> that is, for some other reason, being held open for a very long time. The
>> query_start time in pg_stat_activity may show you some query that has been
>> running way too long.
>>
>>
>> There are plans for PostgreSQL to have a timeout parameter,
>> open_idle_transaction_timeout , which would cause old transactions to time
>> out after some period of disuse.
>>
>> Buggy connection pool logic is a common culprit for this sort of thing.
>> There are plans for pgpool to provide a better alternative, eventually,
>> where connections would be shared inside a connection pool implemented in C.
>> You may have some more or less buggy connection pool in your Java or PHP
>> application; if a small set of real connections are held in pgpool, that
>> will hide from the database the fact that the application imagines that
>> numerous of them are left idle in transaction for hours at a time.
>> <<<<<<<<<<<<<<<<<<<<
>>
>>
>> buradaki ihtimalde IDLE IN TRANSACTION süreçlerinin uzun süreli olarak
>> devam etmesinden kaynaklanabileceğinden bahsediliyor. bu ihtimale istinaden
>> veritabanında inceleme yaptığımda gerçekten bu süreçlerin sayısının fazla
>> olduğunu gördüm. fakat bu süreçleri sonlandırabileceğim yukarıda bahsedilen
>> open_idle_transaction_timeout süresi henüz postgresql.conf da yok.
>>
>> sippy=# SELECT procpid,client_addr, current_query,query_start from
>> pg_stat_activity where current_query NOT LIKE '<IDLE>';
>> procpid | client_addr |
>> current_query                                                    |
>> query_start
>>
>> ---------+-------------+--------------------------------------------------------------------------------------------------------------------+-------------------------------
>>      918 | 10.0.10.232 | <IDLE> in
>> transaction
>> | 2009-03-25 12:06:15.382207+02
>>      779 |             | <IDLE> in
>> transaction
>> | 2009-03-23 11:03:19.764812+02
>>      780 |             | <IDLE> in
>> transaction
>> | 2009-03-23 11:03:19.767793+02
>>      781 |             | <IDLE> in
>> transaction
>> | 2009-03-23 11:03:19.770713+02
>>      782 |             | <IDLE> in
>> transaction
>> | 2009-03-23 11:03:19.773612+02
>>      783 |             | <IDLE> in
>> transaction
>> | 2009-03-23 11:03:19.776419+02
>>      887 |             | <IDLE> in
>> transaction
>> | 2009-03-23 11:03:23.910591+02
>>    52027 |             | SELECT procpid,client_addr,
>> current_query,query_start from pg_stat_activity where current_query NOT LIKE
>> '<IDLE>'; | 2009-03-25 12:06:38.773785+02
>>
>>
>> bu konuda çözüm olarak ne yapabilirim. 2. ihtimalde pgpool adında
>> postgresql için connection pool hakkında tooldan bahsedilmiş. biraz
>> inceledim bu uygulamayı denemeden önce sizlere sormak istedim. ayrıca 2.
>> ihtimaldeki çözümleri tam anlamamışta olabilirim. fikirlerinizi bekliyorum.
>> şimdiden teşekkürler.
>
>
> --
> Kerem Erciyes
> Sistem Danismani
> http://proje.keremerciyes.com
>
> kerem.erci...@gmail.com
> +90 532 737 05 83
>



-- 
Kerem Erciyes
Sistem Danismani
http://proje.keremerciyes.com

kerem.erci...@gmail.com
+90 532 737 05 83

FreeBSD 6 kitabi: http://www.acikakademi.com/catalog/freebsd6
---------------------------------------------------------------------
Listeye soru sormadan once lutfen http://ipucu.enderunix.org sitesine bakiniz.

Cikmak icin, e-mail: freebsd-unsubscr...@lists.enderunix.org
Liste arsivi: http://news.gmane.org/gmane.org.user-groups.bsd.turkey


Cevap