.comÖzcan Acar © 2009   Kurumsal Java.                                 com
Java ile Yüksek Performanslı      Web Platformları                Özcan Acar               acar@unitedinter.net           ...
Özcan Acar Hakkındapublic class OezcanAcar{     public static void main(String[] args)     {           Acar oezcan = new A...
Özcan Acar Hakkında              Özcan Acar © 2009                         © 2009   Kurumsal Java.                        ...
Java Tasarım Şablonları ve Yazılım Mimarileri                     Tasarım şablonu nedir?                     Interface / A...
Extreme Programming        Çevik süreç nedir?        Çevik manifesto        Extreme Programming nedir?        XP değerleri...
Sunumun İçeriğiWeb performans tanımlamasıServer tarafı performans optimizasyonuClient tarafı performans optimizasyonuBizim...
Web Performans Tanımlaması Performans, bir web aplikasyonun tanımlanan zaman biriminde ve yeterli oranda kullanıcı isteğin...
Performans                       WEB YÜKSEK                       PERFORMANS    SERVER                               CLIEN...
BizimAlem.com Hakkında           600.000 kayıtlı üye,           Günlük ortalama yeni kayıt olan üye adedi           1000-1...
BizimAlem.com Hakkında           Forum,                        Sanal hesap,           Blog,                         VIP üy...
BizimAlem.com v.1.0     Mart 2001            Java 1.3            EJB 1.1            JBoss / Tomcat App Server            P...
İlk Sunucu             Özcan Acar © 2009                        © 2009   Kurumsal Java.                                 Ku...
Internet Bağlantısı               Özcan Acar © 2009                          © 2009   Kurumsal Java.                      ...
Yazılım Mimarisi             Özcan Acar © 2009                        © 2009   Kurumsal Java.                             ...
BA v2.0 GereksinimleriBilgibankası için ayrı bir sunucu kullanılması gerekiyor. Bu bilgibankası içinyapılan işlemlerin per...
BA v.2.0 Altyapı              Özcan Acar © 2009                         © 2009   Kurumsal Java.                           ...
BA v.2.0 Mimari             Özcan Acar © 2009                        © 2009   Kurumsal Java.                              ...
BA v.2.0 Logolar              Özcan Acar © 2009                         © 2009   Kurumsal Java.                           ...
BA v.2.0 Design             Özcan Acar © 2009                        © 2009   Kurumsal Java.                              ...
BA v.2.0 Ağ Güvenliği                Özcan Acar © 2009                           © 2009   Kurumsal Java.                  ...
BA v.2.0 Loadbalancing                Özcan Acar © 2009                           © 2009   Kurumsal Java.                 ...
Database Clustering               Özcan Acar © 2009                          © 2009   Kurumsal Java.                      ...
BA v.3.0 Üç Katmanlı Mimari                   Özcan Acar © 2009                              © 2009   Kurumsal Java.      ...
Değişik Persistens Mekanizmaları                      Özcan Acar © 2009                                 © 2009   Kurumsal ...
BA v3.0 Design            Özcan Acar © 2009                       © 2009   Kurumsal Java.                                K...
BA v3.0 Design            Özcan Acar © 2009                       © 2009   Kurumsal Java.                                K...
Caching MekanizmalarıLocal Caching                Özcan Acar © 2009                           © 2009   Kurumsal Java.     ...
Caching MekanizmalarıGlobal Tek Hafıza Caching                            Özcan Acar © 2009                               ...
Caching MekanizmalarıGlobal Bölümsel (Partial) Caching                                    Özcan Acar © 2009               ...
MemCached./memcached -d -m 2048 -l 192.168.1.10 -p 11211                                    Özcan Acar © 2009             ...
BA v.3.0 Caching             Özcan Acar © 2009                        © 2009   Kurumsal Java.                             ...
BA v.3.0 Server             Özcan Acar © 2009                        © 2009   Kurumsal Java.                              ...
BA v.3.0 Server             Özcan Acar © 2009                        © 2009   Kurumsal Java.                              ...
BA v.3.0 Server             Özcan Acar © 2009                        © 2009   Kurumsal Java.                              ...
BA Aktuel Teknik Altyapı                 Özcan Acar © 2009                            © 2009   Kurumsal Java.             ...
BA Storage Cluster              Özcan Acar © 2009                         © 2009   Kurumsal Java.                         ...
BA Storage Cluster              Özcan Acar © 2009                         © 2009   Kurumsal Java.                         ...
BA Storage Cluster              Özcan Acar © 2009                         © 2009   Kurumsal Java.                         ...
BA Google İstatistikleri                  Özcan Acar © 2009                             © 2009   Kurumsal Java.           ...
BA Google İstatistikleri                  Özcan Acar © 2009                             © 2009   Kurumsal Java.           ...
Ağ Yönetimi          Özcan Acar © 2009                     © 2009   Kurumsal Java.                              Kurumsal J...
Gzip Compression             Özcan Acar © 2009                        © 2009   Kurumsal Java.                             ...
Browser Cache           Özcan Acar © 2009                      © 2009   Kurumsal Java.                               Kurum...
Performans Sorunlarının Çözülmesi   Thread Dump   Heap Dump   Logging   Connection Pooling Tuning   Application Server Tun...
Thread Dump          Özcan Acar © 2009                     © 2009   Kurumsal Java.                              Kurumsal J...
Thread Dump"tcpConnection-8080-9662" daemon prio=1 tid=0x540315a8 nid=0x7c7c runnable[0x61af0000..0x61af0f30]    at java.n...
Loggingbizimalem@web1:~/resin/log> tail -f bizimalem.logDEBUG 2009-04-11 16:00:45,169 smart.community.ui.VideoController:3...
Connection Pooling Tuning<resource-ref> <res-ref-name>jdbc/PostgresDB60</res-ref-name> <res-type>javax.sql.DataSource</res...
Application Server Tuning<thread-max>256</thread-max> <thread-min id=50/> <thread-keepalive id=50/> <accept-buffer-size id...
Java VM Tuning-J-server-J-Dsun.net.inetaddr.ttl=1-J-Xmx1024m-J-Xms1024m-J-Xmn100m-J-XX:MaxPermSize=200m-J-XX:MaxNewSize=24...
Heap Dump            Özcan Acar © 2009                       © 2009   Kurumsal Java.                                Kurums...
SQL Profiling - IronTrackSQL                   Özcan Acar © 2009                              © 2009   Kurumsal Java.     ...
Code Profiling – Eclipse Profiler                      Özcan Acar © 2009                                 © 2009   Kurumsal...
Linux Tuningulimit -n 128000ulimit -c unlimitedulimit -s 4096echo 128000 > /proc/sys/fs/file-maxecho 0 > /proc/sys/net/ipv...
Kaynak: KurumsalJava.com                 Özcan Acar © 2009                            © 2009   Kurumsal Java.             ...
Kaynak: KurumsalJava.comBizimAlem.com    http://www.kurumsaljava.com/download/18                                     Özcan...
KurumsalJavaAkademisi.com                 Özcan Acar © 2009                            © 2009   Kurumsal Java.            ...
Sonİlginiz için teşekkür ederim.                       Özcan Acar © 2009   Kurumsal Java.                                 ...
Upcoming SlideShare
Loading in …5
×

BizimAlem.com – Java İle Yüksek Performanslı Web Platformu

2,198 views

Published on

BizimAlem.com – Java İle Yüksek Performanslı Web Platformu

Published in: Technology, Education
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
2,198
On SlideShare
0
From Embeds
0
Number of Embeds
791
Actions
Shares
0
Downloads
13
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

BizimAlem.com – Java İle Yüksek Performanslı Web Platformu

  1. 1. .comÖzcan Acar © 2009 Kurumsal Java. com
  2. 2. Java ile Yüksek Performanslı Web Platformları Özcan Acar acar@unitedinter.net http://www.ozcanacar.com http://www.kurumsaljava.com Özcan Acar © 2009 © 2009 Kurumsal Java. Kurumsal Java. com com
  3. 3. Özcan Acar Hakkındapublic class OezcanAcar{ public static void main(String[] args) { Acar oezcan = new Acar(); oezcan.setBirthday("18.07.1974"); oezcan.setBirthplace("Izmir"); oezcan.setJob("Bilgisayar Mühendisi"); oezcan.setPassion("Java EE"); }} Özcan Acar © 2009 © 2009 Kurumsal Java. Kurumsal Java. com com
  4. 4. Özcan Acar Hakkında Özcan Acar © 2009 © 2009 Kurumsal Java. Kurumsal Java. com com
  5. 5. Java Tasarım Şablonları ve Yazılım Mimarileri Tasarım şablonu nedir? Interface / Abstract sınıf nedir? Oluşturucu Tasarım Şablonları Factory, Abstract Factory, Builder, Prototype, Singleton Yapısal Tasarım Şablonları Adapter, Bridge, Facade, Decorator, Composite, Flyweight, Proxy Davranışsal Tasarım Şablonları Command, Memento, Strategy, Iterator, State, Observer, Visitor Özcan Acar © 2009 © 2009 Kurumsal Java. Kurumsal Java. com com
  6. 6. Extreme Programming Çevik süreç nedir? Çevik manifesto Extreme Programming nedir? XP değerleri ve prensipleri Çevik proje planlaması Çevik süreçlerde iletişim Çevik tasarım Sürekli entegrasyon Test güdümlü yazılım Yazılım metrikleri Özcan Acar © 2009 © 2009 Kurumsal Java. Kurumsal Java. com com
  7. 7. Sunumun İçeriğiWeb performans tanımlamasıServer tarafı performans optimizasyonuClient tarafı performans optimizasyonuBizimAlem.com – Yüksek performans örneğiPerformans problem çözümü Özcan Acar © 2009 © 2009 Kurumsal Java. Kurumsal Java. com com
  8. 8. Web Performans Tanımlaması Performans, bir web aplikasyonun tanımlanan zaman biriminde ve yeterli oranda kullanıcı isteğini cevaplayan davranış biçimidir. Özcan Acar © 2009 © 2009 Kurumsal Java. Kurumsal Java. com com
  9. 9. Performans WEB YÜKSEK PERFORMANS SERVER CLIENT• Loadbalancing • Browser Caching, Etag• Caching • Content Gzip• JDBC Optimization • Fewer Http Requests• Connection Pooling • Extrernal Javascript & CSS• Profiling• OS Optimization Özcan Acar © 2009 © 2009 Kurumsal Java. Kurumsal Java. com com
  10. 10. BizimAlem.com Hakkında 600.000 kayıtlı üye, Günlük ortalama yeni kayıt olan üye adedi 1000-1500, 40 a yakın sunucu, switch, loadbalancer, firewall sistemleri, Tamemen J2EE (Java 1.5) ve Open Source tabanlı, Tüm sunucular Linux işletim sistemiyle çalışıyor, Günlük ziyaretçi sayısı 45.000 – 50.000 civarında, Günlük sayfa gösterim adedi 1.1 milyon civarında. Özcan Acar © 2009 © 2009 Kurumsal Java. Kurumsal Java. com com
  11. 11. BizimAlem.com Hakkında Forum, Sanal hesap, Blog, VIP üyelik, Okey, Tavla, E-Card, Batak, Bilardo gibi multiplayer Limitsiz fotograf oyunlar, albümleri, Youtube vari video Mesaj merkezi, modülü, Takvim, Gruplar, Yönetim paneli Haberler, (Dashboard), Anketler, Sanal hediyeler, Sütun, Shop, Arkadaş listesi, Favori üye listesi, Özcan Acar © 2009 © 2009 Kurumsal Java. Kurumsal Java. com com
  12. 12. BizimAlem.com v.1.0 Mart 2001 Java 1.3 EJB 1.1 JBoss / Tomcat App Server Postres 6.x bilgibankası Suse Linux 6.x işletim sistemi Postfix email sunucu Özcan Acar © 2009 © 2009 Kurumsal Java. Kurumsal Java. com com
  13. 13. İlk Sunucu Özcan Acar © 2009 © 2009 Kurumsal Java. Kurumsal Java. com com
  14. 14. Internet Bağlantısı Özcan Acar © 2009 © 2009 Kurumsal Java. Kurumsal Java. com com
  15. 15. Yazılım Mimarisi Özcan Acar © 2009 © 2009 Kurumsal Java. Kurumsal Java. com com
  16. 16. BA v2.0 GereksinimleriBilgibankası için ayrı bir sunucu kullanılması gerekiyor. Bu bilgibankası içinyapılan işlemlerin performansını artırır.Email gönderimi için ayrı bir sunucunun kullanılması gerekiyor. Bu şekildesistemin diger bölümlerini etkilemeden email gönderimi performansıartırılabilir.JBoss yerine yeni bir application server kullanılması gerekiyor, çünkü EJBkullanılmadığına göre JBoss gibi bir EJB containere olan ihtiyaç ortadankalkmıştır. Yeni application serveri olarak Caucho Resin 2 1.x serisini seçtim.Resin performansı yüksek olan bir Servlet / JSP containerdir, yani Tomcatgibi bir application server.Web aplikasyonu iki değişik Resin application server içinde paralelçalıştırabilirsem, gelen yükü bu iki server arasında paylaştırabilirim. Busebepten dolayı web aplikasyonu (v.2.0) için en az iki yeni sunucuya ihtiyacımvar. Bu şekilde online olan üyelerin adedi 500 e kadar yükselebilir. Sunucukapasitesi arttıkça, hizmet verilebilecek online üye adedi de artar. Özcan Acar © 2009 © 2009 Kurumsal Java. Kurumsal Java. com com
  17. 17. BA v.2.0 Altyapı Özcan Acar © 2009 © 2009 Kurumsal Java. Kurumsal Java. com com
  18. 18. BA v.2.0 Mimari Özcan Acar © 2009 © 2009 Kurumsal Java. Kurumsal Java. com com
  19. 19. BA v.2.0 Logolar Özcan Acar © 2009 © 2009 Kurumsal Java. Kurumsal Java. com com
  20. 20. BA v.2.0 Design Özcan Acar © 2009 © 2009 Kurumsal Java. Kurumsal Java. com com
  21. 21. BA v.2.0 Ağ Güvenliği Özcan Acar © 2009 © 2009 Kurumsal Java. Kurumsal Java. com com
  22. 22. BA v.2.0 Loadbalancing Özcan Acar © 2009 © 2009 Kurumsal Java. Kurumsal Java. com com
  23. 23. Database Clustering Özcan Acar © 2009 © 2009 Kurumsal Java. Kurumsal Java. com com
  24. 24. BA v.3.0 Üç Katmanlı Mimari Özcan Acar © 2009 © 2009 Kurumsal Java. Kurumsal Java. com com
  25. 25. Değişik Persistens Mekanizmaları Özcan Acar © 2009 © 2009 Kurumsal Java. Kurumsal Java. com com
  26. 26. BA v3.0 Design Özcan Acar © 2009 © 2009 Kurumsal Java. Kurumsal Java. com com
  27. 27. BA v3.0 Design Özcan Acar © 2009 © 2009 Kurumsal Java. Kurumsal Java. com com
  28. 28. Caching MekanizmalarıLocal Caching Özcan Acar © 2009 © 2009 Kurumsal Java. Kurumsal Java. com com
  29. 29. Caching MekanizmalarıGlobal Tek Hafıza Caching Özcan Acar © 2009 © 2009 Kurumsal Java. Kurumsal Java. com com
  30. 30. Caching MekanizmalarıGlobal Bölümsel (Partial) Caching Özcan Acar © 2009 © 2009 Kurumsal Java. Kurumsal Java. com com
  31. 31. MemCached./memcached -d -m 2048 -l 192.168.1.10 -p 11211 Özcan Acar © 2009 © 2009 Kurumsal Java. Kurumsal Java. com com
  32. 32. BA v.3.0 Caching Özcan Acar © 2009 © 2009 Kurumsal Java. Kurumsal Java. com com
  33. 33. BA v.3.0 Server Özcan Acar © 2009 © 2009 Kurumsal Java. Kurumsal Java. com com
  34. 34. BA v.3.0 Server Özcan Acar © 2009 © 2009 Kurumsal Java. Kurumsal Java. com com
  35. 35. BA v.3.0 Server Özcan Acar © 2009 © 2009 Kurumsal Java. Kurumsal Java. com com
  36. 36. BA Aktuel Teknik Altyapı Özcan Acar © 2009 © 2009 Kurumsal Java. Kurumsal Java. com com
  37. 37. BA Storage Cluster Özcan Acar © 2009 © 2009 Kurumsal Java. Kurumsal Java. com com
  38. 38. BA Storage Cluster Özcan Acar © 2009 © 2009 Kurumsal Java. Kurumsal Java. com com
  39. 39. BA Storage Cluster Özcan Acar © 2009 © 2009 Kurumsal Java. Kurumsal Java. com com
  40. 40. BA Google İstatistikleri Özcan Acar © 2009 © 2009 Kurumsal Java. Kurumsal Java. com com
  41. 41. BA Google İstatistikleri Özcan Acar © 2009 © 2009 Kurumsal Java. Kurumsal Java. com com
  42. 42. Ağ Yönetimi Özcan Acar © 2009 © 2009 Kurumsal Java. Kurumsal Java. com com
  43. 43. Gzip Compression Özcan Acar © 2009 © 2009 Kurumsal Java. Kurumsal Java. com com
  44. 44. Browser Cache Özcan Acar © 2009 © 2009 Kurumsal Java. Kurumsal Java. com com
  45. 45. Performans Sorunlarının Çözülmesi Thread Dump Heap Dump Logging Connection Pooling Tuning Application Server Tuning Java VM Tuning Linux Tuning Code Profiling SQL Profiling Özcan Acar © 2009 © 2009 Kurumsal Java. Kurumsal Java. com com
  46. 46. Thread Dump Özcan Acar © 2009 © 2009 Kurumsal Java. Kurumsal Java. com com
  47. 47. Thread Dump"tcpConnection-8080-9662" daemon prio=1 tid=0x540315a8 nid=0x7c7c runnable[0x61af0000..0x61af0f30] at java.net.SocketInputStream.socketRead0(Native Method) at java.net.SocketInputStream.read(SocketInputStream.java:129) at com.caucho.vfs.SocketStream.read(SocketStream.java:159) at com.caucho.vfs.ReadStream.readBuffer(ReadStream.java:790) at com.caucho.vfs.ReadStream.fillBuffer(ReadStream.java:765) at com.caucho.server.http.HttpRequest.readRequest(HttpRequest.java:360) at com.caucho.server.http.HttpRequest.handleRequest(HttpRequest.java:193) at com.caucho.server.http.HttpRequest.handleConnection(HttpRequest.java:171) at com.caucho.server.TcpConnection.run(TcpConnection.java:139) at java.lang.Thread.run(Thread.java:595) Özcan Acar © 2009 © 2009 Kurumsal Java. Kurumsal Java. com com
  48. 48. Loggingbizimalem@web1:~/resin/log> tail -f bizimalem.logDEBUG 2009-04-11 16:00:45,169 smart.community.ui.VideoController:3012 - 61: s:3:"ugc"DEBUG 2009-04-11 16:00:45,169 smart.community.ui.VideoController:3023 - duration: 03:02DEBUG 2009-04-11 16:00:45,170 smart.community.ui.VideoController:3052 - duration: hawin_21DEBUG 2009-04-11 16:00:45,170 smart.community.ui.VideoController:3062 - duration: 1855DEBUG 2009-04-11 16:00:45,170 smart.community.ui.VideoController:3078 - getVideoVo() exitDEBUG 2009-04-11 16:00:45,173 smart.community.ui.VideoController:3633 - getPopularTags()DEBUG 2009-04-11 16:00:45,215 smart.community.ui.VideoController:3766 - getPopularTags() exitDEBUG 2009-04-11 16:00:45,216 smart.community.ui.VideoController:3201 - getGameComments()DEBUG 2009-04-11 16:00:45,267 smart.community.ui.VideoController:3387 - getGameComments() exitDEBUG 2009-04-11 16:01:49,760 smart.core.storage.MogileFsStorageImpl:88 - delete()DEBUG 2009-04-11 16:01:49,761 com.guba.mogilefs.Backend:195 - command: deletedomain=prod&key=1894250DEBUG 2009-04-11 16:01:49,784 com.guba.mogilefs.Backend:241 - response: OKDEBUG 2009-04-11 16:01:49,784 smart.core.storage.MogileFsStorageImpl:101 - delete() exitDEBUG 2009-04-11 16:01:49,785 smart.core.storage.MogileFsStorageImpl:88 - delete()DEBUG 2009-04-11 16:01:49,785 com.guba.mogilefs.Backend:195 - command: deletedomain=prod&key=m_1894250 Özcan Acar © 2009 © 2009 Kurumsal Java. Kurumsal Java. com com
  49. 49. Connection Pooling Tuning<resource-ref> <res-ref-name>jdbc/PostgresDB60</res-ref-name> <res-type>javax.sql.DataSource</res-type> <init-param driver-name="org.postgresql.Driver"/> <init-param url="jdbc:postgresql://192.168.1.90/bizimalem"/> <init-param user="acar"/> <init-param password="acar"/> <init-param ping-table="community_ping"/> <init-param ping-on-reuse="true"/> <init-param max-connections="100"/> <init-param max-idle-time="36000"/> <init-param max-active-time="36000"/> <init-param connection-wait-time="36000"/> <prepared-statement-cache-size>200</prepared-statement-cache-size></resource-ref> Özcan Acar © 2009 © 2009 Kurumsal Java. Kurumsal Java. com com
  50. 50. Application Server Tuning<thread-max>256</thread-max> <thread-min id=50/> <thread-keepalive id=50/> <accept-buffer-size id=512/> <request-timeout id=15s/> <listen id=500/><session-config> <session-max id=20000/></session-config> Özcan Acar © 2009 © 2009 Kurumsal Java. Kurumsal Java. com com
  51. 51. Java VM Tuning-J-server-J-Dsun.net.inetaddr.ttl=1-J-Xmx1024m-J-Xms1024m-J-Xmn100m-J-XX:MaxPermSize=200m-J-XX:MaxNewSize=24m-J-XX:NewSize=24m-J-XX:SurvivorRatio=128-J-XX:MaxTenuringThreshold=0-J-XX:CMSInitiatingOccupancyFraction=60 Özcan Acar © 2009 © 2009 Kurumsal Java. Kurumsal Java. com com
  52. 52. Heap Dump Özcan Acar © 2009 © 2009 Kurumsal Java. Kurumsal Java. com com
  53. 53. SQL Profiling - IronTrackSQL Özcan Acar © 2009 © 2009 Kurumsal Java. Kurumsal Java. com com
  54. 54. Code Profiling – Eclipse Profiler Özcan Acar © 2009 © 2009 Kurumsal Java. Kurumsal Java. com com
  55. 55. Linux Tuningulimit -n 128000ulimit -c unlimitedulimit -s 4096echo 128000 > /proc/sys/fs/file-maxecho 0 > /proc/sys/net/ipv4/icmp_echo_ignore_allecho 0 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcastsecho 0 > /proc/sys/net/ipv4/tcp_timestampsecho 30 > /proc/sys/net/ipv4/tcp_fin_timeoutecho 1800 > /proc/sys/net/ipv4/tcp_keepalive_timeecho "4096 87380 4194304" > /proc/sys/net/ipv4/tcp_rmemecho "4096 65536 4194304" > /proc/sys/net/ipv4/tcp_wmemecho 4096 > /proc/sys/net/core/netdev_max_backlogecho 1048576 > /proc/sys/net/core/wmem_defaultecho 1048576 > /proc/sys/net/core/wmem_maxecho 1048576 > /proc/sys/net/core/rmem_defaultecho 1048576 > /proc/sys/net/core/rmem_maxecho 30000 > /proc/sys/net/ipv4/tcp_max_syn_backlogecho 0 > /proc/sys/net/ipv4/conf/eth0/accept_source_routeecho 0 > /proc/sys/net/ipv4/conf/eth0/accept_redirects Özcan Acar © 2009 © 2009 Kurumsal Java. Kurumsal Java. com com
  56. 56. Kaynak: KurumsalJava.com Özcan Acar © 2009 © 2009 Kurumsal Java. Kurumsal Java. com com
  57. 57. Kaynak: KurumsalJava.comBizimAlem.com http://www.kurumsaljava.com/download/18 Özcan Acar © 2009 © 2009 Kurumsal Java. Kurumsal Java. com com
  58. 58. KurumsalJavaAkademisi.com Özcan Acar © 2009 © 2009 Kurumsal Java. Kurumsal Java. com com
  59. 59. Sonİlginiz için teşekkür ederim. Özcan Acar © 2009 Kurumsal Java. com

×