When Node.js goes wrong: Debugging Node in production. Surge 2012 David Pacheco Joyent
|
|
|
- Ralph Booker
- 9 years ago
- Views:
Transcription
1 When Node.js goes wrong: Debugging Node in production Surge 2012 David Pacheco Joyent
2 The Rise of Node.js We see Node.js as the confluence of three ideas: JavaScript s friendliness and rich support for asynchrony (i.e., closures) High-performance JavaScript VMs (e.g., V8) Time-tested system abstractions (i.e. Unix, in the form of streams) Event-oriented model delivers consistent performance in the presence of long latency events (i.e. no artificial latency bubbles) Node.js is displacing C for a lot of highly reliable, high performance core infrastructure software (at Joyent alone: DNS, DHCP, SNMP, LDAP, key value stores, public-facing web services,...). This has been great for rapid development, but historically has come with a cost in debuggability. Debugging is decidedly not a new problem... 2
3 The Genesis of debugging As soon as we started programming, we found to our surprise that it wasn't as easy to get programs right as we had thought. Debugging had to be discovered. I can remember the exact instant when I realized that a large part of my life from then on was going to be spent in finding mistakes in my own programs. Sir Maurice Wilkes,
4 Debugging Node: a run-away service February, 2011: Joyent is preparing to launch no.de, a Node PaaS. During testing, Cloud Analytics becomes intermittently unresponsive. Quickly traced the problem to a rogue data aggregator using 100% of 1 CPU core and not responding over HTTP or AMQP. How do you debug this? 4
5 Debugging a run-away service Check the logs? 5
6 Debugging a run-away service Check syscall activity (truss/strace)? 6
7 Debugging a run-away service Check thread stacks: v8::internal::runtime::setobjectproperty+0x36d() v8::internal::runtime_setproperty+0x73() 0xfe7601f6() 0xfbff31d8() 0xfc468f59() 0xfe8e51cf() 0xfe760841() 0xfe8e3dc8() 0xfe8e24a4() ev_run+0x406() uv_run+0x1c() node::start+0xa9() main+0x1b() _start+0x83() 7
8 Give up? Could add more logging for next time, but we don t know how to reproduce it. (Plus, what would we log?)... but it s still exhibiting these symptoms! Can t we figure out why?! Text Text 8
9 The more general problem The software: a moderately complex concurrent service (that is, where concurrent requests can affect one another). The deployment: in production, 10s to 1000s of instances. The problem: ~once/day, one of the instances crashes, leaving behind a stacktrace where an assertion was blown. (Or worse: one of the instances simply misbehaves, leaving nothing to help figure out what s going wrong.) How do you debug this? 9
10 A first approach Add instrumentation (console.log) and redeploy. How easy is it to deploy a new version? How risky is it to deploy a new version? What s the impact? What if it s a very common code path that you need to instrument? What if this isn t your code, but a customer s, whose deployment you cannot control? Are you sure you ll only need to do this once? (You lose credibility with each lap with ops and customers.) If you re lucky or if the problem is relatively simple, this can work okay. 10
11 The postmortem technique Experience with the EDSAC has shown that although a high proportion of mistakes can be removed by preliminary checking, there frequently remain mistakes which could only have been detected in the early stages by prolonged and laborious study. Some attention, therefore, has been given to the problem of dealing with mistakes after the programme has been tried and found to fail. Stanley Gill, The diagnosis of mistakes in programmes on the EDSAC,
12 A better approach For C programs, we have rich tools for postmortem analysis of a system based on a snapshot of its state. This technique is so old, the term for this state snapshot dates from the dawn of computing: it s a core dump. Once a core dump has been generated, either automatically after a crash or on-demand using gcore(1), the program can be immediately restarted to restore service quickly so that engineers can debug the problem asynchronously. Using the debugger on the core dump, you can inspect all internal program state: global variables, threads, and objects. Can also use the same tools with a live process. Can t we do this with Node.js? 12
13 Debugging dynamic environments Historically, native postmortem tools have been unable to meaningfully observe dynamic environments like Node. Such tools would need to translate native abstractions from the dump (symbols, functions, structs) into their higher-level counterparts in the dynamic environment (variables, Functions, Objects). Some abstractions don t even exist explicitly in the language itself. (e.g., JavaScript s event queue) Node is not alone! The state of the art is no better in Python, Ruby, or PHP, and not nearly solved for Java or Erlang either. 13
14 Aside: MDB illumos-based systems like SmartOS and OmniOS have MDB, the modular debugger built specifically for postmortem analysis MDB was originally built for postmortem analysis of the operating system kernel and later extended to applications Plug-ins ( dmods ) can easily build on one another to deliver powerful postmortem analysis tools, e.g.: ::stacks coalesces threads based on stack trace, with optional filtering by module, caller, etc ::findleaks performs postmortem garbage collection on a core dump to find memory leaks in native code Could we build a dmod for Node? 14
15 mdb_v8: postmortem debugging for Node With some excruciating pain and some ugly layer violations, we were able to build mdb_v8 With ::jsstack, prints call stacks, including native C++ and JavaScript functions and arguments. With ::jsprint, given a pointer, prints out as a C++ object and its JavaScript counterpart. With ::v8function, given a JSFunction pointer, show the assembly for that function. With ::findjsobjects, scans the heap to identify how many instances of each object type exist (incredible visibility into memory usage). Demo 15
16 Remember that run-away Node program? In February, 2011, we had essentially no way to see what this program was doing. We saved a core dump in case we might one day have a way to read it. We also added instrumentation in case we saw it again. (We expected to see it again very soon after going to production.) We didn t see it again until October, while the mdb_v8 work was underway. So we applied what we had to the original core file... 16
17 And the winner is: 17 > ::jsstack 8046a9c <anonymous> (as exports.bucketize) at lib/heatmap.js position af8 caaggrvalueheatmapimage at lib/ca/ca-agg.js position > 8046a9c::jsframe -v 8046a9c <anonymous> (as exports.bucketize) func: fc435fcd file: lib/heatmap.js posn: position 7838 arg1: fc (JSObject) arg2: fc (JSArray) > fc070719::jsprint { } base: , height: 281, width: 624, max: , min: ,... Invalid input resulted in infinite loop in JavaScript Time to root cause: 10 minutes
18 mdb_v8: How the sausage is made V8 (libv8.a) includes a small amount (a few KB) of metadata that describes the heap s classes, type information, and class layouts. (Small enough to include in production builds.) mdb_v8 knows how to identify stack frames, iterate function arguments, iterate object properties, and walk basic V8 structures (arrays, functions, strings). mdb_v8 uses the debug metadata encoded in the binary to avoid hardcoding the way heap structures are laid out in memory. (Still has intimate knowledge of things like property iteration.) 18
19 What did you say was in this sausage? Goal: debugger module shouldn t hardcode structure offsets and other constants, but rather rely on metadata included in the node binary. Generally speaking, these offsets are computed at compile-time and used in inline functions defined by macros. So they get compiled out and are not available at runtime. The build process was modified to: Generate a new C++ source file with references to the constants that we need, using extern C constants that our debugger module can look for and read. Build this with the rest of libv8_base.a. Result: this debug metadata is embedded in $PREFIX/bin/node, and the debugger can read it directly from the core file. 19 (Should) generally work for 32-bit/64-bit, different architectures, and no matter how complex the expressions for the constants are.
20 Problems with this approach We strongly believe in the general approach of having the debugger grok program state from a snapshot, because it s comprehensive and has zero runtime overhead, meaning it works in production. (This is a constraint.) With the current implementation, the debugger module is built and delivered separately from the VM, which means that changes in the VM can (and do) break the debugger module. Additionally, each debugger feature requires reverse engineering and reimplementing some piece of the VM. Ideally, the VM would embed programmatic logic for decoding the in-memory state (e.g., iterating objects, iterating object properties, walking the stack, and so on) -- without relying on the VM itself to be running. 20
21 Debugging live programs Postmortem tools can be applied to live processes, and core files can be generated for running processes. Examining processes and core dumps is useful for many kinds of failure, but sometimes you want to trace runtime activity. 21
22 DTrace Provides comprehensive tracing of kernel and application-level events in real-time (from thread on-cpu to Node GC done ) Scales arbitrarily with the number of traced events. (first class in situ data aggregation) Suitable for production systems because it s safe, has minimal overhead (usually no disabled probe effect), and can be enabled/ disabled dynamically (no application restart required). Open-sourced in Available on illumos-derived systems like SmartOS and OmniOS, Solaris-derived systems, BSD, and MacOS (Linux ports in progress). 22
23 DTrace in dynamic environments DTrace instruments the system holistically, which is to say, from the kernel, which poses a challenge for interpreted environments User-level statically defined tracing (USDT) providers describe semantically relevant points of instrumentation Some interpreted environments (e.g., Ruby, Python, PHP, Erlang) have added USDT providers that instrument the interpreter itself This approach is very fine-grained (e.g., every function call) and doesn t work in JIT d environments We decided to take a different tack for Node.js... 23
24 DTrace for Node.js Given the nature of the paths that we wanted to instrument, we introduced a function into JavaScript that Node can call to get into USDT-instrumented C++ Introduces disabled probe effect: calling from JavaScript into C++ costs even when probes are not enabled Use USDT is-enabled probes to minimize disabled probe effect once in C++ If (and only if) the probe is enabled, prepare a structure for the kernel that allows for translation into a structure that is familiar to node programmers 24
25 DTrace example: Node GC time, per GC # dtrace n node*:::gc-start { self->start = timestamp; } microseconds ] = quantize((timestamp self->start) / 1000); self->start = 0; } microseconds value Distribution count
26 DTrace probes in Node.js modules Our technique is adequate for DTrace probes in the Node.js core, but it s very cumbersome for pure Node.js modules Fortunately, Chris Andrews has generalized this technique in his node-dtrace-provider module: This module allows one to declare and fire one s own probes entirely in JavaScript Used extensively by Joyent s Mark Cavage in his node-restify and ldap.js modules, especially to allow for measurement of latency 26
27 DTrace stack traces ustack(): DTrace looks at (%ebp, %eip) and follows frame pointers to the top of the stack (standard approach). Asynchronously, looks for symbols in the process s address space to map instruction offsets to function names: 0x80ed9ab becomes malloc+0x16 Great for C, C++. Doesn t work for JIT d environments. Functions are compiled at runtime => they have no corresponding symbols => the VM must be called upon at runtime to map frames to function names Garbage collection => functions themselves move around at arbitrary points => mapping of frames to function names must be done synchronously jstack(): Like ustack(), but invokes VM-specific ustack helper, expressed in D and attached to the VM binary, to resolve names. 27
28 DTrace ustack helpers For JIT d code, DTrace supports ustack helper mechanism, by which the VM itself includes logic to translate from (frame pointer, instruction pointer) -> human-readable function name When jstack() action is processed in probe context (in the kernel), DTrace invokes the helper to translate frames: Before After 0xfe772a8c tojson at native date.js position xfe84d962 BasicJSONSerialize at native json.js position xfea6b6ed BasicSerializeObject at native json.js position xfe84db11 BasicJSONSerialize at native json.js position xfeaba5ee stringify at native json.js position
29 V8 ustack helper The ustack helper has to do much of the same work that mdb_v8 does to identify stack frames and pick apart heap objects. The same debug metadata that s used for mdb_v8 is used for the helper, but unlike mdb_v8, the helper is embedded directly into the node binary (good!). The implementation is written in D, and subject to all the same constraints as other DTrace scripts (and then some): no functions, no iteration, no if/else. Particularly nasty pieces include expanding ConsStrings and binary searching to compute line numbers. The helper only depends on V8, not Node.js. (With MacOS support for ustack helpers from profile probes, we could use the same helper to profile webapps running under Chrome!) 29
30 Profiling Node with DTrace profile provider: probe that fires N times per second per CPU ustack()/jstack() actions: collect user-level stacktrace when a probe fires. Low-overhead runtime profiling (via stack sampling) that can be turned on and off without restarting your program. Demo. 30
31 Node.js Flame Graph Visualizing profiling output: Full, interactive version: 31
32 More real-world examples The infinite loop problem we saw earlier was debugged with mdb_v8, and could have also been debugged with used mdb_v8 s heap scanning to zero in on a memory leak in Node 0.7 that was seriously impacting several users, including (Voxer) has used Node profiling + flame graphs to identify several performance issues (unoptimized OpenSSL implementation, poor memory allocation behavior). Debugging RangeError (stack overflow, with no stack trace). 32
33 Final thoughts Node is a great for rapidly building complex or distributed system software. But in order to achieve the reliability we expect from such systems, we must be able to understand both fatal and nonfatal failure in production from the first occurrence. One year ago: we had no way to solve the infinite loop problem without adding more logging and hoping to see it again. Now we have tools to inspect both running and crashed Node programs (mdb_v8 and the DTrace ustack helper), and we ve used them to debug problems in minutes that we either couldn t solve at all before or which took days or weeks to solve. But the postmortem tools are still primitive (like a flashlight in a dark room). Need better support from the VM. 33
34 for help with V8 and landing and the Node core team for help integrating DTrace and MDB for flame for for putting it to such great use in node-restify and and Voxer for pushing Node hard, running into lots of issues, and helping us refine the tools to debug them. (God bless the early adopters!) For more info:
Building a Real-Time Cloud Analytics Service with Node.js
Building a Real-Time Cloud Analytics Service with Node.js Surge 2011 David Pacheco (@dapsays) Bryan Cantrill (@bcantrill) Last year at #surgecon... Last year, we described the emergence of real-time data
Instrumentation Software Profiling
Instrumentation Software Profiling Software Profiling Instrumentation of a program so that data related to runtime performance (e.g execution time, memory usage) is gathered for one or more pieces of the
Jonathan Worthington Scarborough Linux User Group
Jonathan Worthington Scarborough Linux User Group Introduction What does a Virtual Machine do? Hides away the details of the hardware platform and operating system. Defines a common set of instructions.
General Introduction
Managed Runtime Technology: General Introduction Xiao-Feng Li ([email protected]) 2012-10-10 Agenda Virtual machines Managed runtime systems EE and MM (JIT and GC) Summary 10/10/2012 Managed Runtime
Monitoring, Tracing, Debugging (Under Construction)
Monitoring, Tracing, Debugging (Under Construction) I was already tempted to drop this topic from my lecture on operating systems when I found Stephan Siemen's article "Top Speed" in Linux World 10/2003.
Example of Standard API
16 Example of Standard API System Call Implementation Typically, a number associated with each system call System call interface maintains a table indexed according to these numbers The system call interface
C#5.0 IN A NUTSHELL. Joseph O'REILLY. Albahari and Ben Albahari. Fifth Edition. Tokyo. Sebastopol. Beijing. Cambridge. Koln.
Koln C#5.0 IN A NUTSHELL Fifth Edition Joseph Albahari and Ben Albahari O'REILLY Beijing Cambridge Farnham Sebastopol Tokyo Table of Contents Preface xi 1. Introducing C# and the.net Framework 1 Object
CSCI E 98: Managed Environments for the Execution of Programs
CSCI E 98: Managed Environments for the Execution of Programs Draft Syllabus Instructor Phil McGachey, PhD Class Time: Mondays beginning Sept. 8, 5:30-7:30 pm Location: 1 Story Street, Room 304. Office
Java Debugging Ľuboš Koščo
Java Debugging Ľuboš Koščo Solaris RPE Prague Agenda Debugging - the core of solving problems with your application Methodologies and useful processes, best practices Introduction to debugging tools >
THE BUSY DEVELOPER'S GUIDE TO JVM TROUBLESHOOTING
THE BUSY DEVELOPER'S GUIDE TO JVM TROUBLESHOOTING November 5, 2010 Rohit Kelapure HTTP://WWW.LINKEDIN.COM/IN/ROHITKELAPURE HTTP://TWITTER.COM/RKELA Agenda 2 Application Server component overview Support
Zing Vision. Answering your toughest production Java performance questions
Zing Vision Answering your toughest production Java performance questions Outline What is Zing Vision? Where does Zing Vision fit in your Java environment? Key features How it works Using ZVRobot Q & A
Operating System Structures
COP 4610: Introduction to Operating Systems (Spring 2015) Operating System Structures Zhi Wang Florida State University Content Operating system services User interface System calls System programs Operating
Last Class: OS and Computer Architecture. Last Class: OS and Computer Architecture
Last Class: OS and Computer Architecture System bus Network card CPU, memory, I/O devices, network card, system bus Lecture 3, page 1 Last Class: OS and Computer Architecture OS Service Protection Interrupts
Monitoring applications in multitier environment. Uroš Majcen [email protected]. A New View on Application Management. www.quest.
A New View on Application Management www.quest.com/newview Monitoring applications in multitier environment Uroš Majcen [email protected] 2008 Quest Software, Inc. ALL RIGHTS RESERVED. Management Challenges
Oracle Solaris Studio Code Analyzer
Oracle Solaris Studio Code Analyzer The Oracle Solaris Studio Code Analyzer ensures application reliability and security by detecting application vulnerabilities, including memory leaks and memory access
Database Application Developer Tools Using Static Analysis and Dynamic Profiling
Database Application Developer Tools Using Static Analysis and Dynamic Profiling Surajit Chaudhuri, Vivek Narasayya, Manoj Syamala Microsoft Research {surajitc,viveknar,manojsy}@microsoft.com Abstract
Attacking Obfuscated Code with IDA Pro. Chris Eagle
Attacking Obfuscated Code with IDA Pro Chris Eagle Outline Introduction Operation Demos Summary 2 First Order Of Business MOVE UP AND IN! There is plenty of room up front I can't increase the font size
Using System Tracing Tools to Optimize Software Quality and Behavior
Using System Tracing Tools to Optimize Software Quality and Behavior Thomas Fletcher, Director, Automotive Solutions QNX Software Systems Ltd. [email protected] Gaining Insight At one time, embedded devices
Java Troubleshooting and Performance
Java Troubleshooting and Performance Margus Pala Java Fundamentals 08.12.2014 Agenda Debugger Thread dumps Memory dumps Crash dumps Tools/profilers Rules of (performance) optimization 1. Don't optimize
A Comparative Study on Vega-HTTP & Popular Open-source Web-servers
A Comparative Study on Vega-HTTP & Popular Open-source Web-servers Happiest People. Happiest Customers Contents Abstract... 3 Introduction... 3 Performance Comparison... 4 Architecture... 5 Diagram...
Computing Concepts with Java Essentials
2008 AGI-Information Management Consultants May be used for personal purporses only or by libraries associated to dandelon.com network. Computing Concepts with Java Essentials 3rd Edition Cay Horstmann
Tuning WebSphere Application Server ND 7.0. Royal Cyber Inc.
Tuning WebSphere Application Server ND 7.0 Royal Cyber Inc. JVM related problems Application server stops responding Server crash Hung process Out of memory condition Performance degradation Check if the
The Evolution of Load Testing. Why Gomez 360 o Web Load Testing Is a
Technical White Paper: WEb Load Testing To perform as intended, today s mission-critical applications rely on highly available, stable and trusted software services. Load testing ensures that those criteria
Production time profiling On-Demand with Java Flight Recorder
Production time profiling On-Demand with Java Flight Recorder Using Java Mission Control & Java Flight Recorder Klara Ward Principal Software Developer Java Platform Group, Oracle Copyright 2015, Oracle
vmprof Documentation Release 0.1 Maciej Fijalkowski, Antonio Cuni, Sebastian Pawlus
vmprof Documentation Release 0.1 Maciej Fijalkowski, Antonio Cuni, Sebastian Pawlus January 23, 2016 Contents 1 Introduction 1 1.1 Requirements............................................... 1 1.2 Installation................................................
HeapStats: Your Dependable Helper for Java Applications, from Development to Operation
: Technologies for Promoting Use of Open Source Software that Contribute to Reducing TCO of IT Platform HeapStats: Your Dependable Helper for Java Applications, from Development to Operation Shinji Takao,
Assignment # 1 (Cloud Computing Security)
Assignment # 1 (Cloud Computing Security) Group Members: Abdullah Abid Zeeshan Qaiser M. Umar Hayat Table of Contents Windows Azure Introduction... 4 Windows Azure Services... 4 1. Compute... 4 a) Virtual
CRITICAL CONSIDERATIONS WHEN BUILDING ENTERPRISE NODE.JS APPLICATIONS. Dave Anderson & Greg Neiheisel / differential.io
CRITICAL CONSIDERATIONS WHEN BUILDING ENTERPRISE NODE.JS APPLICATIONS Dave Anderson & Greg Neiheisel / differential.io OCTOBER 2014 CRITICAL CONSIDERATIONS WHEN BUILDING ENTERPRISE NODE.JS APPLICATIONS
Tomcat Tuning. Mark Thomas April 2009
Tomcat Tuning Mark Thomas April 2009 Who am I? Apache Tomcat committer Resolved 1,500+ Tomcat bugs Apache Tomcat PMC member Member of the Apache Software Foundation Member of the ASF security committee
Helping you avoid stack overflow crashes!
Helping you avoid stack overflow crashes! One of the toughest (and unfortunately common) problems in embedded systems is stack overflows and the collateral corruption that it can cause. As a result, we
x86 ISA Modifications to support Virtual Machines
x86 ISA Modifications to support Virtual Machines Douglas Beal Ashish Kumar Gupta CSE 548 Project Outline of the talk Review of Virtual Machines What complicates Virtualization Technique for Virtualization
THE WINDOWS AZURE PROGRAMMING MODEL
THE WINDOWS AZURE PROGRAMMING MODEL DAVID CHAPPELL OCTOBER 2010 SPONSORED BY MICROSOFT CORPORATION CONTENTS Why Create a New Programming Model?... 3 The Three Rules of the Windows Azure Programming Model...
What s Cool in the SAP JVM (CON3243)
What s Cool in the SAP JVM (CON3243) Volker Simonis, SAP SE September, 2014 Public Agenda SAP JVM Supportability SAP JVM Profiler SAP JVM Debugger 2014 SAP SE. All rights reserved. Public 2 SAP JVM SAP
Oracle JRockit Mission Control Overview
Oracle JRockit Mission Control Overview An Oracle White Paper June 2008 JROCKIT Oracle JRockit Mission Control Overview Oracle JRockit Mission Control Overview...3 Introduction...3 Non-intrusive profiling
GDB Tutorial. A Walkthrough with Examples. CMSC 212 - Spring 2009. Last modified March 22, 2009. GDB Tutorial
A Walkthrough with Examples CMSC 212 - Spring 2009 Last modified March 22, 2009 What is gdb? GNU Debugger A debugger for several languages, including C and C++ It allows you to inspect what the program
Cloud Computing and Open Source: Watching Hype meet Reality
Cloud Computing and Open Source: Watching Hype meet Reality Rich Wolski UCSB Computer Science Eucalyptus Systems Inc. May 26, 2011 Exciting Weather Forecasts 99 M 167 M 6.5 M What is a cloud? SLAs Web
Mobile Performance Management Tools Prasanna Gawade, Infosys April 2014
Mobile Performance Management Tools Prasanna Gawade, Infosys April 2014 Computer Measurement Group, India 1 Contents Introduction Mobile Performance Optimization Developer Tools Purpose and Overview Mobile
Lecture 1 Introduction to Android
These slides are by Dr. Jaerock Kwon at. The original URL is http://kettering.jrkwon.com/sites/default/files/2011-2/ce-491/lecture/alecture-01.pdf so please use that instead of pointing to this local copy
Virtual Machine Learning: Thinking Like a Computer Architect
Virtual Machine Learning: Thinking Like a Computer Architect Michael Hind IBM T.J. Watson Research Center March 21, 2005 CGO 05 Keynote 2005 IBM Corporation What is this talk about? Virtual Machines? 2
Cloud Computing. Up until now
Cloud Computing Lecture 11 Virtualization 2011-2012 Up until now Introduction. Definition of Cloud Computing Grid Computing Content Distribution Networks Map Reduce Cycle-Sharing 1 Process Virtual Machines
Mission-Critical Java. An Oracle White Paper Updated October 2008
Mission-Critical Java An Oracle White Paper Updated October 2008 Mission-Critical Java The Oracle JRockit family of products is a comprehensive portfolio of Java runtime solutions that leverages the base
B M C S O F T W A R E, I N C. BASIC BEST PRACTICES. Ross Cochran Principal SW Consultant
B M C S O F T W A R E, I N C. PATROL FOR WEBSPHERE APPLICATION SERVER BASIC BEST PRACTICES Ross Cochran Principal SW Consultant PAT R O L F O R W E B S P H E R E A P P L I C AT I O N S E R V E R BEST PRACTICES
11.1 inspectit. 11.1. inspectit
11.1. inspectit Figure 11.1. Overview on the inspectit components [Siegl and Bouillet 2011] 11.1 inspectit The inspectit monitoring tool (website: http://www.inspectit.eu/) has been developed by NovaTec.
Developing a Web Server Platform with SAPI Support for AJAX RPC using JSON
Revista Informatica Economică, nr. 4 (44)/2007 45 Developing a Web Server Platform with SAPI Support for AJAX RPC using JSON Iulian ILIE-NEMEDI, Bucharest, Romania, [email protected] Writing a custom web
Effective Java Programming. measurement as the basis
Effective Java Programming measurement as the basis Structure measurement as the basis benchmarking micro macro profiling why you should do this? profiling tools Motto "We should forget about small efficiencies,
Debugging with TotalView
Tim Cramer 17.03.2015 IT Center der RWTH Aachen University Why to use a Debugger? If your program goes haywire, you may... ( wand (... buy a magic... read the source code again and again and...... enrich
Kernel Types System Calls. Operating Systems. Autumn 2013 CS4023
Operating Systems Autumn 2013 Outline 1 2 Types of 2.4, SGG The OS Kernel The kernel is the central component of an OS It has complete control over everything that occurs in the system Kernel overview
Minimizing code defects to improve software quality and lower development costs.
Development solutions White paper October 2008 Minimizing code defects to improve software quality and lower development costs. IBM Rational Software Analyzer and IBM Rational PurifyPlus software Kari
NetBeans Profiler is an
NetBeans Profiler Exploring the NetBeans Profiler From Installation to a Practical Profiling Example* Gregg Sporar* NetBeans Profiler is an optional feature of the NetBeans IDE. It is a powerful tool that
Resource Utilization of Middleware Components in Embedded Systems
Resource Utilization of Middleware Components in Embedded Systems 3 Introduction System memory, CPU, and network resources are critical to the operation and performance of any software system. These system
Debugging A MotoHawk Application using the Application Monitor
CONTROL SYSTEM SOLUTIONS Debugging A MotoHawk Application using the Application Monitor Author(s): New Eagle Consulting 3588 Plymouth Road, #274 Ann Arbor, MI 48105-2603 Phone: +1 (734) 929-4557 Ben Hoffman
Advanced Performance Forensics
Advanced Performance Forensics Uncovering the Mysteries of Performance and Scalability Incidents through Forensic Engineering Stephen Feldman Senior Director Performance Engineering and Architecture [email protected]
Interpreters and virtual machines. Interpreters. Interpreters. Why interpreters? Tree-based interpreters. Text-based interpreters
Interpreters and virtual machines Michel Schinz 2007 03 23 Interpreters Interpreters Why interpreters? An interpreter is a program that executes another program, represented as some kind of data-structure.
How to test and debug an ASP.NET application
Chapter 4 How to test and debug an ASP.NET application 113 4 How to test and debug an ASP.NET application If you ve done much programming, you know that testing and debugging are often the most difficult
Enterprise Manager Performance Tips
Enterprise Manager Performance Tips + The tips below are related to common situations customers experience when their Enterprise Manager(s) are not performing consistent with performance goals. If you
Frysk The Systems Monitoring and Debugging Tool. Andrew Cagney
Frysk The Systems Monitoring and Debugging Tool Andrew Cagney Agenda Two Use Cases Motivation Comparison with Existing Free Technologies The Frysk Architecture and GUI Command Line Utilities Current Status
Survey of Filesystems for Embedded Linux. Presented by Gene Sally CELF
Survey of Filesystems for Embedded Linux Presented by Gene Sally CELF Presentation Filesystems In Summary What is a filesystem Kernel and User space filesystems Picking a root filesystem Filesystem Round-up
How To Use Java On An Ipa 2.2.2 (Jspa) With A Microsoft Powerbook (Jempa) With An Ipad 2.3.2 And A Microos 2.5 (Microos)
Java Monitoring and Diagnostic Tooling Iris Baron IBM Java JIT on System Z [email protected] Session ID: 16182 Insert Custom Session QR if Desired. Java Road Map Java 7.0 Language Updates Java 6.0 SE 5.0
Real Time Programming: Concepts
Real Time Programming: Concepts Radek Pelánek Plan at first we will study basic concepts related to real time programming then we will have a look at specific programming languages and study how they realize
Tool - 1: Health Center
Tool - 1: Health Center Joseph Amrith Raj http://facebook.com/webspherelibrary 2 Tool - 1: Health Center Table of Contents WebSphere Application Server Troubleshooting... Error! Bookmark not defined. About
C Compiler Targeting the Java Virtual Machine
C Compiler Targeting the Java Virtual Machine Jack Pien Senior Honors Thesis (Advisor: Javed A. Aslam) Dartmouth College Computer Science Technical Report PCS-TR98-334 May 30, 1998 Abstract One of the
Chapter 1. Dr. Chris Irwin Davis Email: [email protected] Phone: (972) 883-3574 Office: ECSS 4.705. CS-4337 Organization of Programming Languages
Chapter 1 CS-4337 Organization of Programming Languages Dr. Chris Irwin Davis Email: [email protected] Phone: (972) 883-3574 Office: ECSS 4.705 Chapter 1 Topics Reasons for Studying Concepts of Programming
Monitoring and Managing a JVM
Monitoring and Managing a JVM Erik Brakkee & Peter van den Berkmortel Overview About Axxerion Challenges and example Troubleshooting Memory management Tooling Best practices Conclusion About Axxerion Axxerion
Integrating VoltDB with Hadoop
The NewSQL database you ll never outgrow Integrating with Hadoop Hadoop is an open source framework for managing and manipulating massive volumes of data. is an database for handling high velocity data.
An Oracle White Paper September 2013. Advanced Java Diagnostics and Monitoring Without Performance Overhead
An Oracle White Paper September 2013 Advanced Java Diagnostics and Monitoring Without Performance Overhead Introduction... 1 Non-Intrusive Profiling and Diagnostics... 2 JMX Console... 2 Java Flight Recorder...
Bypassing Browser Memory Protections in Windows Vista
Bypassing Browser Memory Protections in Windows Vista Mark Dowd & Alexander Sotirov [email protected] [email protected] Setting back browser security by 10 years Part I: Introduction Thesis Introduction
Apache Tomcat. Load-balancing and Clustering. Mark Thomas, 20 November 2014. 2014 Pivotal Software, Inc. All rights reserved.
2 Apache Tomcat Load-balancing and Clustering Mark Thomas, 20 November 2014 Introduction Apache Tomcat committer since December 2003 [email protected] Tomcat 8 release manager Member of the Servlet, WebSocket
Memory Allocation. Static Allocation. Dynamic Allocation. Memory Management. Dynamic Allocation. Dynamic Storage Allocation
Dynamic Storage Allocation CS 44 Operating Systems Fall 5 Presented By Vibha Prasad Memory Allocation Static Allocation (fixed in size) Sometimes we create data structures that are fixed and don t need
WEBAPP PATTERN FOR APACHE TOMCAT - USER GUIDE
WEBAPP PATTERN FOR APACHE TOMCAT - USER GUIDE Contents 1. Pattern Overview... 3 Features 3 Getting started with the Web Application Pattern... 3 Accepting the Web Application Pattern license agreement...
Overview of CS 282 & Android
Overview of CS 282 & Android Douglas C. Schmidt [email protected] www.dre.vanderbilt.edu/~schmidt Institute for Software Integrated Systems Vanderbilt University Nashville, Tennessee, USA CS 282
Debugging Java performance problems. Ryan Matteson [email protected] http://prefetch.net
Debugging Java performance problems Ryan Matteson [email protected] http://prefetch.net Overview Tonight I am going to discuss Java performance, and how opensource tools can be used to debug performance
CSC230 Getting Starting in C. Tyler Bletsch
CSC230 Getting Starting in C Tyler Bletsch What is C? The language of UNIX Procedural language (no classes) Low-level access to memory Easy to map to machine language Not much run-time stuff needed Surprisingly
Restraining Execution Environments
Restraining Execution Environments Segurança em Sistemas Informáticos André Gonçalves Contents Overview Java Virtual Machine: Overview The Basic Parts Security Sandbox Mechanisms Sandbox Memory Native
A Modern Approach to Monitoring Performance in Production
An AppDynamics Business White Paper WHEN LOGGING ISN T ENOUGH A Modern Approach to Monitoring Performance in Production Ten years ago, the standard way to troubleshoot an application issue was to look
Extending Tizen Native Framework with Node.js
Extending Tizen Native Framework with Node.js Nishant Deshpande Hyunju Shin Ph.D. Samsung Electronics Contents Native or Web? Why JavaScript, Node.js? Proposed Architecture Sample Applications Going Forward
Identifying Performance Bottleneck using JRockit. - Shivaram Thirunavukkarasu Performance Engineer Wipro Technologies
Identifying Performance Bottleneck using JRockit - Shivaram Thirunavukkarasu Performance Engineer Wipro Technologies Table of Contents About JRockit Mission Control... 3 Five things to look for in JRMC
RTOS Debugger for ecos
RTOS Debugger for ecos TRACE32 Online Help TRACE32 Directory TRACE32 Index TRACE32 Documents... RTOS Debugger... RTOS Debugger for ecos... 1 Overview... 2 Brief Overview of Documents for New Users... 3
Motorola 8- and 16-bit Embedded Application Binary Interface (M8/16EABI)
Motorola 8- and 16-bit Embedded Application Binary Interface (M8/16EABI) SYSTEM V APPLICATION BINARY INTERFACE Motorola M68HC05, M68HC08, M68HC11, M68HC12, and M68HC16 Processors Supplement Version 2.0
System Structures. Services Interface Structure
System Structures Services Interface Structure Operating system services (1) Operating system services (2) Functions that are helpful to the user User interface Command line interpreter Batch interface
The Design of the Inferno Virtual Machine. Introduction
The Design of the Inferno Virtual Machine Phil Winterbottom Rob Pike Bell Labs, Lucent Technologies {philw, rob}@plan9.bell-labs.com http://www.lucent.com/inferno Introduction Virtual Machine are topical
Bug hunting. Vulnerability finding methods in Windows 32 environments compared. FX of Phenoelit
Bug hunting Vulnerability finding methods in Windows 32 environments compared FX of Phenoelit The goal: 0day What we are looking for: Handles network side input Runs on a remote system Is complex enough
Chapter 3 Operating-System Structures
Contents 1. Introduction 2. Computer-System Structures 3. Operating-System Structures 4. Processes 5. Threads 6. CPU Scheduling 7. Process Synchronization 8. Deadlocks 9. Memory Management 10. Virtual
The Service Revolution software engineering without programming languages
The Service Revolution software engineering without programming languages Gustavo Alonso Institute for Pervasive Computing Department of Computer Science Swiss Federal Institute of Technology (ETH Zurich)
Dart a modern web language
Dart a modern web language or why web programmers need more structure Kasper Lund & Lars Bak Software engineers, Google Inc. Object-oriented language experience: 26 + 12 years The Web Is Fantastic The
IBM Software Services for Lotus Consulting Education Accelerated Value Program. Log Files. 2009 IBM Corporation
Log Files 2009 IBM Corporation Goals Understand where to find log files Understand the purpose of various log files Components and log files Look at logs, starting with the most likely component Review
language 1 (source) compiler language 2 (target) Figure 1: Compiling a program
CS 2112 Lecture 27 Interpreters, compilers, and the Java Virtual Machine 1 May 2012 Lecturer: Andrew Myers 1 Interpreters vs. compilers There are two strategies for obtaining runnable code from a program
Troubleshooting.NET Applications - Knowing Which Tools to Use and When
Troubleshooting.NET Applications - Knowing Which Tools to Use and When Document Version 1.0 Abstract There are three fundamental classifications of problems encountered with distributed applications deployed
JetBrains ReSharper 2.0 Overview Introduction ReSharper is undoubtedly the most intelligent add-in to Visual Studio.NET 2003 and 2005. It greatly increases the productivity of C# and ASP.NET developers,
1 The Java Virtual Machine
1 The Java Virtual Machine About the Spec Format This document describes the Java virtual machine and the instruction set. In this introduction, each component of the machine is briefly described. This
The Advantages of Block-Based Protocol Analysis for Security Testing
The Advantages of Block-Based Protocol Analysis for Security Testing Dave Aitel Immunity,Inc. 111 E. 7 th St. Suite 64, NY NY 10009, USA [email protected] February, 4 2002 Abstract. This paper describes
OS Observability Tools
OS Observability Tools Classic tools and their limitations DTrace (Solaris) SystemTAP (Linux) Slide 1 Where we're going with this... Know about OS observation tools See some examples how to use existing
AjaxScope: Remotely Monitoring Client-side Web-App Behavior
AjaxScope: Remotely Monitoring Client-side Web-App Behavior Emre Kıcıman [email protected] Ben Livshits [email protected] Internet Services Research Center Microsoft Research Runtime Analysis &
Network Management and Monitoring Software
Page 1 of 7 Network Management and Monitoring Software Many products on the market today provide analytical information to those who are responsible for the management of networked systems or what the
Load and Performance Load Testing. RadView Software October 2015 www.radview.com
Load and Performance Load Testing RadView Software October 2015 www.radview.com Contents Introduction... 3 Key Components and Architecture... 4 Creating Load Tests... 5 Mobile Load Testing... 9 Test Execution...
WebSphere Server Administration Course
WebSphere Server Administration Course Chapter 1. Java EE and WebSphere Overview Goals of Enterprise Applications What is Java? What is Java EE? The Java EE Specifications Role of Application Server What
Peach Fuzzer Platform
Fuzzing is a software testing technique that introduces invalid, malformed, or random data to parts of a computer system, such as files, network packets, environment variables, or memory. How the tested
