We wanted to be able to track the path a shopper took through the initial order creation process in ATG. The IP address is often insufficient for reasons such as a shared internet connection, proxy server, etc. We extended the…
Author: Steve
JBOSS – Which threads have a database connection checked out of the pool?
We had an issue in ATG which was eventually traced to deadlocked sessions on checkout, each of which was attempting to decrement inventory for SKU’s in opposite order. In other words, session one wanted to decrement inventory for A and…
Setting TCPNODELAY on Oracle XA datasource in JBOSS
While troubleshooting performance problems, we wanted to test disabling Nagle’s algorithm in JBOSS with an Oracle XA datasource. We found that property was not configurable in the regular Oracle XA class. We ended up extending the Oracle class to set…
High latch free waits on Oracle XA transactions
We experienced large waits as well as the associated CPU spikes, when using distributed XA transactions in an ATG/JBOSS application server to Oracle database environment. Oracle “support” was, per usual, of absolutely no help is diagnosing the situation. I honestly…
Which threads are talking to the database?
Often while troubleshooting, I will want to know where the bottleneck is. If I think the database may be the culprit, I will run the following to print those threads that are making database calls… -bash-4.1$ jstack 20711 | awk…
Determining the source of high java CPU
This post is related to a situtation in which you find yourself with high CPU utilization, but can’t determine the source. This will gather thread dumps and the CPU used by each thread. For the threads that use a large…
Which threads are running on a given CPU
We had a need to see which threads were running on a given CPU, as utilization was not balanced amongst the cores. We used what is below to do so. In our case, our java PID was 488. -bash-4.1$ jstack…
Tying a linux socket file descriptor to a port and IP
While troubleshooting a java thread that appeared to be hung, but not blocked, we used the following troubleshooting process. You can use what is below if you have a thread “stuck” waiting to receive data from another socket. We see…
Joining data in Pig
If you are an RDBMS person that is used to joining data from tables, you will be happy to know that this capability exists in Pig. Below is a very simple example. grunt> fs -cat /people 1,1,steve howard 2,1,becky howard…
ATG RepeatingRequestMonitor
During a recent period of high traffic level on our site, we found we had several threads blocked on a particular component. We found that the component contained a synchronized block of code, which means only one request can be…