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