iis etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
iis etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

10 Mayıs 2019 Cuma

IIS App Pool CPU kullanım ölçümü

IIS üzerinde belirli bir App Pool için CPU kullanımları kaydedilmek isteniyorsa Performance Monitor'de eklenmesi gereken sayaçlar :

Process/% User Time > Bütün w3wp örnekleri (instance'ları) kaydedilebilir.
W3SVC_W3WP/(herhangi bir counter) > Hangi w3wp hangi App Pool a bağlı görmek için

Örnek: w3wp#7 > 212 Process ID > Instance kolonunda 212_xxx app pool a ait.





16 Eylül 2016 Cuma

Web siteniz için ücretsiz SSL kurulumu

Eğer web sitenizde e-ticaret işi yapmıyorsanız, yani ödeme almak gibi bir süreciniz yoksa domain sahipliğinizi garantileyen SSL sertifika süreçlerine girmek ve yüksek ücretler ödemek gerekmiyor.

Bu durumda çoğu zaman siteniz için SSL sertifikasına şu nedenlerle kurmak isteyebilirsiniz:
-Kullanıcıların güvenli şekilde oturum açmasını sağlamak
-facebook, twitter gibi Open Authantication sağlayacılar aracıyla üyelik girişini sağlamak
-Google tarafından yapılan açıklamaya istinaden, SEO açısından daha iyi bir skora sahip olmak.

Dolayısıyla ücretsiz sertifikalar web sunucunuz ile browser arasındaki iletişimin güvenli olmasını sağlamak için yeterlidir ve üstteki ihtiyaçları karşılar. En azından diğer koşullardan bağımsız olarak şifrelenmiş iletişim için gereklidir.

Şu an ücretsiz SSL sertifikası sağlayıcılarından "Let’s Encrypt" en çok tercih edileni:
https://letsencrypt.org/  (3 ayda bir yenilemeli)
http://certify.webprofusion.com/ (Windows için sertifika yönetimi aracı)
Linux üzerinde kurulumu
https://dzone.com/articles/how-to-install-free-ssl-easily-for-your-website
Windows üzerinde Certify aracı ile letsencrypt ssl kurulum anlatımı (IIS üzerine)
https://weblog.west-wind.com/posts/2016/Jul/09/Moving-to-Lets-Encrypt-SSL-Certificates


11 Mart 2016 Cuma

IIS Express 32bit modu ve StackSize (maxStackSize) yetersizliği çözümü

Asp.Net üzerinde geliştirilen bir uygulamada StackOverflow hatası alındığında muhtemelen bir array için yüksek bir değer baştan tanımlanmıştır. Yada herhangi bir şekilde (muhtemelen gerekmediği halde) büyük miktarda bellek kullanımına sebep olabilecek bir tanım yapılması.
Alternatif bir örnek büyük bir text dosyayı stream olarak okumak yerine tek seferde belleğe alınmaya çalışılması...

Hatayı dışardan bir sınıf kullandığınızda alıyorsanız ve başkaları bu hatayı almıyorsa oluşacak hatalardan biri StackSize ile ilgili olabilir. Yani dışardan çağırdığınız sınıfın bellek kullanımı ile ilgili.

Son tecrübemde Java üzerinde geliştirilmiş bir sınıfın IKvm ile .Net'e port edilmiş halini Console uygulamasında hatasız çalışırken Visual Studio'da Asp.net projesi olarak çalıştırmayı denediğimde hata oluşuyordu. (StackTrace kaybolduğundan hata StackOverflow olarak orataya çıkmıyordu.)

Hatayı araştırdığımda iki alternatif öneri vardı:

1. İlgili sınıfı yeni bir thread açıp MaxStackSize belirtip orda çalıştırmak.
2. Visual Studio ile gelen IIS Express'i kullanmak yerine Servis olarak kurulan IIS'i kullanmak.

İlgili sınıfı yeni bir thread için de aşağıdaki şekilde çalıştırabiliriz;

  Thread thread = new Thread(MyMethod, 1048576);
  t.Start();

  void MyMethod()
        {
              //Çağrılan sınıf / method
        }


27 Mayıs 2014 Salı

Web uygulama performansı: IIS / W3C Logları ile hata ayıklama ve iyileştirme

İhtiyaç duyulabilecek ısaltma açıklamarı:
*W3C: World wide web consortium : http://en.wikipedia.org/wiki/World_Wide_Web_Consortium
*UTC : Coordinated universal time: http://en.wikipedia.org/wiki/Coordinated_Universal_Time
*IIS : Internet informatiın services  http://en.wikipedia.org/wiki/Internet_Information_Services

-Son dakika proje kurtartma yazısı değildir.

IIS üzerinde sunulan web/servis uygulamaları için loglamanın faydaları:
-Kullanım (en az/çok ziyaret alan sayfalar, css ve scriptler),
-Performans (yavaş sayfalar [network gecikmeleri dahil]),https://logparserplus.com/examples/
-Hata (Sayfa bulunamadı ve çalışma zamanı hataları gibi)
-Güvenlik (istek bilgilerine göre [query veya header]) hacking girişimleri

Buradaki süreç,
-IIS üzerinde log kaydı tutmak için tanımlar: Konum, içerik formatı, dosya formatı, tarih, büyüklük.
-Log tutulacak alanların yapılacak analiz türüne göre seçimi.
-Standart olmayan durumlar için ekstra geliştirmeler (advanced logging özellikleri)
-Logların analiz edilebilir duruma getirilmesi: Log analizi için kullanılabilecek araç ve yöntemler
-Analiz sürecinde çıkarımlar yapıp icraate dönüştürme.
-Loglardaki http status, win status ve user agent bilgilerini anlamlandırma


IIS üzerinde log kaydı tutmak için tanımlar (configuration)


IIS üzerinden standart log (Logging), Advanced Logging (IIS 7 sonrası extension olarak) ya da Failed Request Tracing Rules ile daha detaylı loglar tutulup analiz edilebilir


20 Ekim 2011 Perşembe

IIS'de static conent sunumu

IIS 7' de herhangi bir web site'da css, js ve image'lar için de cookie alışverişi yapılır. Özellikle Form Auth vs. gibi authantication yöntemlerinde veya state tutmak için cookie kullanıldığı durumlarda bu veri ciddi oranda büyük olur.
Ortalama bir sayfa isteğinde 50-100 arası dosya browser'a iner. Eğer cache vs gibi özellikler iyi tanımlanmamışsa her defasında bu gerçekleştirilir. Bu dosyalardan ilki static veya dinamik olsun sonuç olarak html'dir ve sonrakilerin büyük çoğunluğu image'dır. (Çöplüğe dönmüş [bir sürü farklı developerların çalıştığı] web site'larda java script ve css de çoktur.) Bu durumda ciddi oranda bir veri cookie alışveri üzerinden sunucu-istemci arasında gidip gelir.

Cookie alışverişini kapatmanın yolu IIS 7 için site özelliklerinden Session State'de bu özellikiği "Not Enabled" olarak ayarlamakdır. Fakat bu yapılınca o site için session tamamen kapatılır ve dinamik sayfalarda hem sunucu hem istemci tarafı state tutmak için işlevsiz hale gelir.




Bu durumda static content için zaten yapılması gereken örn: bir sub domain (yeni bir site) üzerinden static content sunumunu gerçekleştirmek.

Örneğin solution altında bulunan "Assets" dizini için static.xdomain.com adından yeni bir sub domain (yeni bir site) açılır.
O site için "Session Mode" iptal edilir bölyece cookie olayı iptal edilir.

Anahtar noktalar:

Bu sayede compression ve cache'de ayarlanabilir.

Böylece css ve bu css lerin üzerindeki image lar buradan sunulur.

Test için mevcut cookie ler silinmelidir ki yanılgıya düşürmesin.

Statik içeriği ayrı bir domain den sunarken css dosyalarını cache temizlenme problemi için kullanılan yöntem style.css?aaa vs şeklinde. Bu durumda netscaler gibi statik içerik proxy araçları bunları cache'lemek veya ziplemek durumunda mahrum kalıyor.
Buna alternatif çözüm static sub domain'i üzerinde Url route tanımı yapmak örn: static.domain.com/style-version.css. Bu da style.css yönlendirme yapar.

Kaynakça:


Static content in bulunduğu dizin için özel web.config oluşturmak. (Eğer static content mevcut web solution altında ise bazı module'leri disable (override) gerekiyor. Bunun içinde applicationHost.config de bazı değişiklikler yapmak gerekli. Yani shared hosting de pek mümkün değil.
http://www.robertsindall.co.uk/blog/creating-static-content-website-in-iis-7/

http://stackoverflow.com/questions/3060775/stopping-cookies-being-set-from-a-domain-aka-cookieless-domain-to-increase-si

Web config den ve iis manager dan cookiless domain yapmak (session kapatmak)
http://stackoverflow.com/questions/4105149/how-to-respect-serve-static-content-from-a-cookieless-domain-page-speed-rule-in