08-22-2006
socket close hangs and CPU go to 100%
Hello,
I'm currently having a problem with HPUX.
The application is a C app. It's a socket server.
It runs mostly fine, but under some circumstances (I can not replicate it), the app hangs and the CPU goes to 100%.
I have use gdb to attach to the app, and it was doing a close().
the close() system call is the one that is hanging.
--------------------
(gdb) where
#0 0xc00000000031a5d0:0 in _close_sys+0x30 () from /usr/lib/hpux64/libc.so.1
#1 0xc00000000032ac40:0 in close+0x140 () from /usr/lib/hpux64/libc.so.1
#2 0x4000000000053950:0 in server (soc_id=5, client_address={sin_family = 2,
sin_port = 3149, sin_addr = {s_addr = 3489154679},
sin_zero = "\000\000\000\000\000\000\000"}) at src/tpswitch.c:982
#3 0x4000000000055b50:0 in main (argc=1, argv=0x9fffffffffffe8a0)
at src/tpswitch.c:1244
-----------------------
The previous stack trace shows that the app is in _close_sys+0x30() from the c library.
The descriptor passed to close() is a socket descriptor.
Thanks in advance for your Help!
9 More Discussions You Might Find Interesting
1. Programming
I have a SUN environment running an WebLogic that communicates w/a 3rd party running IIS. When the IIS site goes down (frequently), I am stuck with sockets in an ESTABLISHED state, and cannot seem to figure out how to avoid this. No exceptions are thrown as I can still open connections to the IIS... (1 Reply)
Discussion started by: teledelux
1 Replies
2. HP-UX
Hi all,
I have a HP-UX 11.23 that have a Server establishing connections on port 8888 .
The problem is that when i need to stop and restart the Server, the connections mantain the same state and i need to wait about 20-30 minutes before all connections finishes.
The connections remain at... (2 Replies)
Discussion started by: Renato Gregio
2 Replies
3. UNIX and Linux Applications
I have written a socker program. I have executed that program many times without closing the socket. So I want to find which all sockets binded with which file descriptor.
Is there any way to close those socket, which have been opened in that program's execution.
please help me!.. (3 Replies)
Discussion started by: pa.chidhambaram
3 Replies
4. Programming
Interesting issue. There was some discussion on the LKML last year regarding the potential problems in concurrent applications reusing file descriptors in various scenarios. The main issue is that the reuse of a file descriptor and reception of data in a threaded application can be confused pretty... (1 Reply)
Discussion started by: ramen_noodle
1 Replies
5. UNIX for Advanced & Expert Users
Hi,
I was porting ipv4 application to ipv6; i was done with TCP transports. Now i am facing problem with SCTp transport at runtime.
To test SCTP transport I am using following server and client socket programs. Server program runs fine, but client program fails giving Invalid Arguments for... (0 Replies)
Discussion started by: chandrutiptur
0 Replies
6. Solaris
Hello Friends,
On one of my Solaris 10 box, CPU usage shows 100% using "sar", "vmstat". However, it has 4 CPUs and prstat and glance are not showing enough processes to justify high CPU utilization.
=========================================================================
$ prstat -a
... (4 Replies)
Discussion started by: mahive
4 Replies
7. IP Networking
Is the last two line necessary?
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
int main(void)
{
struct sockaddr_in stSockAddr;
... (0 Replies)
Discussion started by: vistastar
0 Replies
8. Programming
can someone provide an example, where if the parent process quits for any reason, then the child process will also close? (3 Replies)
Discussion started by: omega666
3 Replies
9. IP Networking
I need clarification on whether it is okay to set socket options on a listening socket
simultaneously when it is being used in an accept() call?
Following is the scenario:-
-- Task 1 - is executing in a loop - polling a listen socket, lets call it 'fd', (whose file descriptor is global)... (2 Replies)
Discussion started by: jake24
2 Replies
LEARN ABOUT DEBIAN
catalyst::manual::deployment::fastcgi
Catalyst::Manual::Deployment::FastCGI(3pm) User Contributed Perl Documentation Catalyst::Manual::Deployment::FastCGI(3pm)
NAME
Catalyst::Manual::Deployment::FastCGI - Deploying Catalyst with FastCGI
FastCGI Deployment
FastCGI is a high-performance extension to CGI. It is suitable for production environments, and is the standard method for deploying
Catalyst in shared hosting environments.
Pros
Speed
FastCGI performs equally as well as mod_perl. Don't let the 'CGI' fool you; your app runs as multiple persistent processes ready to
receive connections from the web server.
App Server
When using external FastCGI servers, your application runs as a standalone application server. It may be restarted independently from the
web server. This allows for a more robust environment and faster reload times when pushing new app changes. The frontend server can even
be configured to display a friendly "down for maintenance" page while the application is restarting.
Load-balancing
You can launch your application on multiple backend servers and allow the frontend web server to perform load-balancing among all of them.
And of course, if one goes down, your app continues to run.
Multiple versions of the same app
Each FastCGI application is a separate process, so you can run different versions of the same app on a single server.
Can run with threaded Apache
Since your app is not running inside of Apache, the faster mpm_worker module can be used without worrying about the thread safety of your
application.
Widely supported.
FastCGI is compatible with many server implementations, not just Apache.
Cons
You may have to disable mod_deflate. If you experience page hangs with mod_fastcgi then remove deflate.load and deflate.conf from
mods-enabled/
More complex environment
With FastCGI, there are more things to monitor and more processes running than when using mod_perl.
Standalone FastCGI Server
In server mode the application runs as a standalone server and accepts connections from a web server. The application can be on the same
machine as the web server, on a remote machine, or even on multiple remote machines. Advantages of this method include running the
Catalyst application as a different user than the web server, and the ability to set up a scalable server farm.
To start your application in server mode, install the FCGI::ProcManager module and then use the included fastcgi.pl script.
$ script/myapp_fastcgi.pl -l /tmp/myapp.socket -n 5
Command line options for fastcgi.pl include:
-d -daemon Daemonize the server.
-p -pidfile Write a pidfile with the pid of the process manager.
-l -listen Listen on a socket path, hostname:port, or :port.
-n -nproc The number of processes started to handle requests.
See below for the specific web server configurations for using the external server.
WEB SERVERS
Any web server which supports FastCGI should work with Catalyst. Configuration recipies for well-known web servers are linked below, and we
would welcome contributions from people deploying Catalyst on other web servers.
Apache
Catalyst::Manual::Deployment::Apache::FastCGI
nginx
Catalyst::Manual::Deployment::nginx::FastCGI
lighttpd
Catalyst::Manual::Deployment::lighttpd::FastCGI
Microsoft IIS
Catalyst::Manual::Deployment::IIS::FastCGI
AUTHORS
Catalyst Contributors, see Catalyst.pm
COPYRIGHT
This library is free software. You can redistribute it and/or modify it under the same terms as Perl itself.
perl v5.14.2 2012-01-20 Catalyst::Manual::Deployment::FastCGI(3pm)