iScroll Input Button Broken

In our Mobile Web Applications we use iScroll to provide scrolling behavior.  The way it works is that iScroll takes all of the touch(mouse) events and converts them in to scrolling actions.

Unfortunately there is a problem with this when including some other controls that are also expecting to process the touch events.  In my case this is the input type=”button” which does not process the onClick event.  Other html fields including input, select, and textarea also exhibit this problem.  For instance:

<input type="button" onclick="return ShowItemInfo(2,0);" value="Details">

After searching, I found a couple of solutions that appear to relate to different versions of iScroll (we are using v4.2.4) which modify onBeforeScrollStart including this one under Issue 17 on the iScroll site:

// ORIGINAL
//            onBeforeScrollStart: function(e) { e.preventDefault(); },
// FIX:     Don't prevent the events for select input, and textarea.  Allows these inputs
//          to be used on iPad. 
            onBeforeScrollStart: function(e) {
                var target = e.target;
                while (target.nodeType != 1) target = target.parentNode;
                if (target.tagName != 'SELECT' && target.tagName != 'INPUT' && target.tagName != 'TEXTAREA')
                    e.preventDefault();
            },

You can also configure onBeforeScrollStart without modifying by configuring the iScroll options.  I chose not to do this because we use iScroll in many parts of the application and it seemed safer to comment iScroll and fix it in one place instead of many.

References:

http://stackoverflow.com/a/10279215/86923

ASP.NET Performance Monitoring

Recently we had a performance problem that caused poor response time, in the 10-15 seconds.  We are printing to handheld printers as one of the services which results in a long-running method, but should be able to handle the load we are seeing.

In order to understand the problem we did some performance monitoring to diagnose the problem.  These are the performance metrics that we used for monitoring performance.

Processor Performance (Processor):

  • % Processor Time – The percentage of elapsed time that the processor spends to execute a non-Idle thread.

Memory UsagePerformance (Memory):

  • % Committed Bytes In Use – The ratio of Memory\\Committed Bytes to the Memory\\Commit Limit. Committed memory is the physical memory in use for which space has been reserved in the paging file should it need to be written to disk.
  • Page Faults/sec – Page Faults/sec is the average number of pages faulted per second.

Network Performance (Network Interface):

  • Bytes Received/sec – The rate at which bytes are received over each network adapter, including framing characters.
  • Bytes Sent/sec – The rate at which bytes are sent over each network adapter, including framing characters.
  • Bytes Total/sec – The rate at which bytes are sent and received over each network adapter, including framing characters.

ASP.NET

  • Requests Current – The current number of requests, including those that are queued, currently executing, or waiting to be written to the client.
  • Request Execution Time – The number of milliseconds that it took to execute the most recent request.
  • Requests Queued – The number of requests waiting to be processed.
  • Request Wait Time – The number of milliseconds the most recent request was waiting in the queue.
  • Requests Disconnected – The number of requests disconnected due to communication errors or user terminated.
  • Requests Rejected – The number of requests rejected because the request queue was full.

ASP.Net Applications

  • Pipeline Instance Count – The number of active request pipeline instances for the specified ASP.NET application. Since only one execution thread can run within a pipeline instance, this number gives the maximum number of concurrent requests that are being processed for a given application. In most circumstances it is better for this number to be low when under load, which signifies that the CPU is well utilized.

Web Services

  • Current Connections – Current Connections is the current number of connections established with the Web service.
  • Total Method Requests/sec – The rate HTTP requests are received.
  • Bytes Total/sec – Bytes Total/sec is the sum of Bytes Sent/sec and Bytes Received/sec.  This is the total rate of bytes transferred by the Web service.

References: