23 Temmuz 2020 Perşembe
Client IP'yi IIS Loguna Yazdırmak
WinDBG ile Dump Analizi
0:000>
~87s
eax=00000000
ebx=00000001 ecx=00000000 edx=00000000 esi=00000001 edi=00000001
eip=7741c8ac
esp=39b2ec10 ebp=39b2ed98
iopl=0 nv up ei pl nz ac po nc
cs=0023
ss=002b ds=002b es=002b fs=0053
gs=002b
efl=00000212
ntdll!NtWaitForMultipleObjects+0xc:
7741c8ac
c21400
ret 14h
0:087> !clrstack2 à artık başında a görüldüğü gibi 87 nolu thread'e geçti.
DbgId
ThreadId Apartment Kind
CLR
GC Mode GC Suspending?
87 11fc4
MTA
v4.0.30319.34209 Preemptive no
MonitorWait
-----------
Method
XXXXXXX.Esb.Queue.QueueManager.GetNextMessage()
Monitor
Address 0x0000000020421088
SP
IP
Function
Source
39b2ef7c
00000000
GCFrame
39b2f02c
00000000 HelperMethodFrame_1OBJ [System.Threading.Monitor.ObjWait(Boolean,
Int32, System.Object)] à alttaki de bunu
çağırmış.
39b2f0b0
72625d16 System.Threading.Monitor.Wait(System.Object, Int32,
Boolean) à
alttaki getnextmessage methodu bir yerde threadslep yapıyor; bekliyor yani. 87
nolu thread
bekliyor.
39b2f0c0
39006df7
XXXXXX.Esb.Queue.QueueManager.GetNextMessage()
39b2f104
39006ff5
XXXXXXXX.Esb.Queue.WorkerThread.Run()
39b2f128
7259ab43
System.Threading.ThreadHelper.ThreadStart_Context(System.Object)
39b2f134
725ada07
System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext,
System.Threading.ContextCallback, System.Object, Boolean)
39b2f1a0
725ad956
System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext,
System.Threading.ContextCallback, System.Object,
Boolean)
39b2f1b4
725ad921 System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext,
System.Threading.ContextCallback,
System.Object) à http contextin içine konup istek
gelir soaptan vs. burda contextin içi
kounuyor.
39b2f1cc
7259aacc System.Threading.ThreadHelper.ThreadStart()
à threadim burda
başlar.
39b2f320
00000000
GCFrame
39b2f500
00000000
DebuggerU2MCatchHandlerFrame
39b2f56c
00000000
ContextTransitionFrame
39b2f6f4
00000000 DebuggerU2MCatchHandlerFrame
!name2ee
* XXXXXX.Esb.Queue.WorkerThread.Run komutu ile bu classın bu methodunu tüm
kütüphanelerde ararız.
--------------------------------------
Module:
3647869c à
esb.dll’in memorydeki adresi
Assembly:
XXXXXX.Esb.dll
Token:
0600d745
MethodDesc:
38f4b56c
Name:
XXXXX.Esb.Queue.WorkerThread.Run()
JITTED
Code Address: 39006fd0
--------------------------------------
!savemodule
3647869c C:\Temp\XXXXX.Esb.dll à
bu komut ile esb.dll’i Temp dizinine oluşturmuş oluruz.
22 Temmuz 2020 Çarşamba
Unix'te Text/IP Replacement
Üst üste Windows konuları yazdım. Bu defa da unix'te kullanabileceğiniz bir bilgi paylaşalım. Unix makinanızda bir text ya da IP aramak istiyorsunuzdur, yetkiniz dahilinde. Bunu çok hızlı yapabileceğiniz mini bir shell scriptini aşağıda paylaşıyorum:
for x in `find . -name \* | xargs grep -l "127.0.0.1"`;
do
echo $x
done
Sarı ile verdiğim IPyi bulunduğunuz dizin ve onun alt dizinlerinde aratacak, yetkiniz varsa da listeleyecektir.
Mesela bir connection string değişimi veyahut server IP değişimi yapacaksınız. IPleri listelettiniz yukarıdaki gibi. Tek tek elle mi değiştireceksiniz? Tabi ki hayır. Küçük bir ilave ile onu da aşağıdaki gibi yapabilirsiniz:
for x in `find . -name \* | xargs grep -l "127.0.0.1"`;
do
echo $x
sed "s@127.0.0.1@19.86.19.03@g" $x > temp;
mv temp $x;
done
DebugDiag ile Dump Almak
21 Temmuz 2020 Salı
WER ile Otomatik IIS Dump Almak
DumpCount: Kaç adet dump alsın
DumpType: Ne tür bir dump alınsın(1:mini , 2: Full -- Bir de 0 var ama wer üstünden hiç denemedim, bilen arkadaşım dürtebilir; revize edebiliriz yazıyı)
Örneğimizde(üstteki görsel) F altında Dumps adında bir klasöre atıyoruz. 3 defa, full dump aldırıyoruz. Bu sayede crash anında, arıza telaşına düşmeden, arka planda birileri bizim için dump alabilir.
Burada oluşan dump'ı yine DebugDiag'a verip, raporunu inceleyebilirsiniz.
Sonra görüşürüz.
IIS Application Pool Identity
20 Temmuz 2020 Pazartesi
Perfmon User Defined Collector Ekleme
Yakında kayıt ekleyeceğim deyip de, 1 saat sonra eklemeyi ben de beklemiyordum. :) Ani gelişen bir istek diyelim. :)
Bu yazımda, Windows sunucularımız üzerinde yer alan, Performance Monitoring aracı ile istediğimiz collector'ü nasıl ekleyeceğimize bakacağız. Çok kullanmayanlar için, kısaca PerfMon, server'ın, IIS'in performans verilerini toplayabileceğimiz bir tooldur. İşlemci, bellek, w3process'ler, paging... Aklınıza gelebilecek her şeyi izleyebilirsiniz.
Perfmon üzerinde varsayılan tanımlı ajanlar/collectorler sizin için data toplayabilir, aktiflerseniz şayet. Şimdi bu yazımızla birlikte, istediğimiz Collectoru eklemeyi göreceğiz.
Merhaba
10 Ocak 2017 Salı
Oracle: Çalışan SQL ve Session Bilgileri
Şimdi başlığı görüp de Grid varken, neden lazım diyebilirsiniz.. Ancak herkes gride giremiyor malumunuz; özellikle kurumsal firmalarda roller ayrımından ötürü girmeniz pek mümkün değil, dba olmadığınız sürece.
Sıkça kullandığım ama umarım hep keyfi bakmanız gerektirecek bir sql paylaşmak istiyorum:(executing sql, username, lockwaits..)
select sid,serial#,username,lockwait,status,schemaname,
osuser,machine,logon_time,last_call_et,event,t2.sql_text from v$session t1,v$sql t2 where t1.sql_hash_value=t2.hash_value
and t1.status='ACTIVE' and t1.username<>'SYS'
order by username asc
SQL: Kolon İçeriğinde Değişim
Sql'de ifade içindeki minik bir kısmı değiştirme ihtiyacım oldu. Belki işi düşen olursa, hızlıca kullansın diye paylaşıyorum. Bu arada Rusya'dan bir mail aldım; bir konuda yazımdan bir şey alaşılmamış, ödev konusuymu vs. Ara Ara orijinal ifadelerini de yazımda değinmeye çalışacağım, özellikle teknik konularda.
Bir kolon içindeki ifadeyi, başka bir ifade ile değiştirme(find a text --> replace with another text, using replace() function)
degisecekIfade-->mevcuttaki degerdir(current expressin in column)
dogruIfade-->dogru, gelmesini istediginiz deger(new value/expression/text)
update tabloAdiniz
set kolonAdi=REPLACE(kolonAdi, 'degisecekIfade', 'dogruIfade')
where kriterleriniz(criterias);
























