KEMBAR78
Nginx, PHP and Node.js
Nginx, PHP and Node.js 
Make them ready for the enterprise 
Harald 
Zeitlhofer 
Senior 
Technology 
Strategist 
@ 
Dynatrace 
Chris8an 
Schwarzbauer 
Chief 
So=ware 
Architect 
@ 
Dynatrace 
1 #Perform2014
Harald Zeitlhofer 
Senior Technology Strategist @ Dynatrace 
harald.zeitlhofer@dynatrace.com 
Christian Schwarzbauer 
Chief Software Architect @ Dynatrace 
christian.schwarzbauer@dynatrace.com 
2 #Perform2014
3 #Perform2014
New technologies in Dynatrace! 
4 #Perform2014
• Lightweight HTTP server 
• Fast especially at high load 
5 #Perform2014
Leading among 
top 10.000 websites 
6 #Perform2014
7 #Perform2014
• What is it? 
• Server-side JavaScript 
• Running in a Google V8 JavaScript Engine 
• Integrated HTTP Server 
• Why should I use it? What is it good for? 
• Very easy to create server-side web applications 
• You can use JavaScript not only in the browser, but also on the server-side 
• Significantly reduces number of threads blocked on IO 
• Why is it different? 
• Event-based, non-blocking IO 
• Completely asynchronous (well, almost) 
• No multi-threading (of user code) 
8 #Perform2014
9 #Perform2014
Browser 
Java 
Applica3on 
Database 
10 #Perform2014
Browser 
Node.js 
Applica3on 
Database 
IO 
Threads 
11 #Perform2014
• Old, but emerging 
• First version 1995 
• 2004: PHP5 
• Object Oriented Programming, Exception handling, Namespaces 
• Extensions for XML and DOM handling 
• PHP Archives (PHAR) 
• Testing framework PHPUnit 
12 #Perform2014
13 #Perform2014
14 #Perform2014
Integration 
• Apache Module 
LoadModule php5_module /usr/lib/apache2/modules/libphp5.so 
• CGI 
• Fast-CGI 
• PHP-FPM 
• Integration with Nginx 
15 #Perform2014
Integration! 
16 #Perform2014
Dynatrace architecture 
Database 
Performance 
Warehouse 
Dynatrace 
Collector 
Dynatrace 
Server 
Dynatrace 
Clients 
17 #Perform2014
Dynatrace architecture 
Database 
Performance 
Warehouse 
Dynatrace 
Collector 
Dynatrace 
Server 
Dynatrace 
Clients 
18 #Perform2014
• Load agent via LD_PRELOAD 
19 #Perform2014
• Load agent in index.js 
try { 
require('/opt/dynatrace/agent/conf/nodejsagent'); 
} catch (err) { 
console.log("ERROR! Can't find the nodejs agent!", err); 
} 
20 #Perform2014
• Load agent in php.ini 
21 #Perform2014
Let’s see how that fits together! 
22 #Perform2014
Live demo 
23 #Perform2014
Talking about Dynatrace versions … 
dynaTrace 5.5 
dynaTrace 6.0 
Dynatrace 6.1 
24 #Perform2014
• Easy integration into your application 
• Full end-to-end transaction visibility 
• Frontrunner in new technologies 
• Your feedback is very welcome 
• Community 
• Forum 
25 #Perform2014
http://bitly.com/dttrial 
Thank You 
Harald 
Zeitlhofer 
Senior 
Technology 
Strategist 
@ 
Dynatrace 
harald.zeitlhofer@dynatrace.com 
Chris8an 
Schwarzbauer 
Chief 
So=ware 
Architect 
@ 
Dynatrace 
chris3an.schwarzbauer@dynatrace.com 
26 #Perform2014

Nginx, PHP and Node.js

  • 1.
    Nginx, PHP andNode.js Make them ready for the enterprise Harald Zeitlhofer Senior Technology Strategist @ Dynatrace Chris8an Schwarzbauer Chief So=ware Architect @ Dynatrace 1 #Perform2014
  • 2.
    Harald Zeitlhofer SeniorTechnology Strategist @ Dynatrace harald.zeitlhofer@dynatrace.com Christian Schwarzbauer Chief Software Architect @ Dynatrace christian.schwarzbauer@dynatrace.com 2 #Perform2014
  • 3.
  • 4.
    New technologies inDynatrace! 4 #Perform2014
  • 5.
    • Lightweight HTTPserver • Fast especially at high load 5 #Perform2014
  • 6.
    Leading among top10.000 websites 6 #Perform2014
  • 7.
  • 8.
    • What isit? • Server-side JavaScript • Running in a Google V8 JavaScript Engine • Integrated HTTP Server • Why should I use it? What is it good for? • Very easy to create server-side web applications • You can use JavaScript not only in the browser, but also on the server-side • Significantly reduces number of threads blocked on IO • Why is it different? • Event-based, non-blocking IO • Completely asynchronous (well, almost) • No multi-threading (of user code) 8 #Perform2014
  • 9.
  • 10.
    Browser Java Applica3on Database 10 #Perform2014
  • 11.
    Browser Node.js Applica3on Database IO Threads 11 #Perform2014
  • 12.
    • Old, butemerging • First version 1995 • 2004: PHP5 • Object Oriented Programming, Exception handling, Namespaces • Extensions for XML and DOM handling • PHP Archives (PHAR) • Testing framework PHPUnit 12 #Perform2014
  • 13.
  • 14.
  • 15.
    Integration • ApacheModule LoadModule php5_module /usr/lib/apache2/modules/libphp5.so • CGI • Fast-CGI • PHP-FPM • Integration with Nginx 15 #Perform2014
  • 16.
  • 17.
    Dynatrace architecture Database Performance Warehouse Dynatrace Collector Dynatrace Server Dynatrace Clients 17 #Perform2014
  • 18.
    Dynatrace architecture Database Performance Warehouse Dynatrace Collector Dynatrace Server Dynatrace Clients 18 #Perform2014
  • 19.
    • Load agentvia LD_PRELOAD 19 #Perform2014
  • 20.
    • Load agentin index.js try { require('/opt/dynatrace/agent/conf/nodejsagent'); } catch (err) { console.log("ERROR! Can't find the nodejs agent!", err); } 20 #Perform2014
  • 21.
    • Load agentin php.ini 21 #Perform2014
  • 22.
    Let’s see howthat fits together! 22 #Perform2014
  • 23.
    Live demo 23#Perform2014
  • 24.
    Talking about Dynatraceversions … dynaTrace 5.5 dynaTrace 6.0 Dynatrace 6.1 24 #Perform2014
  • 25.
    • Easy integrationinto your application • Full end-to-end transaction visibility • Frontrunner in new technologies • Your feedback is very welcome • Community • Forum 25 #Perform2014
  • 26.
    http://bitly.com/dttrial Thank You Harald Zeitlhofer Senior Technology Strategist @ Dynatrace harald.zeitlhofer@dynatrace.com Chris8an Schwarzbauer Chief So=ware Architect @ Dynatrace chris3an.schwarzbauer@dynatrace.com 26 #Perform2014