system call


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting system call
# 1  
Old 09-17-2011
system call

Trying to figure out a load issue with a webserver. I have traced a php script and noticed the following

Code:
connect(4, {sa_family=AF_INET, sin_port=htons(3306), sin_addr=inet_addr("XX.XX.XX.XX")}, 16) = -1 EINPROGRESS (Operation now in progress) <0.000035>
poll([{fd=4, events=POLLIN|POLLOUT|POLLERR|POLLHUP}], 1, 2000) = 1 ([{fd=4, revents=POLLOUT}]) <0.000120>
getsockopt(4, SOL_SOCKET, SO_ERROR, [8589934592], [4]) = 0 <0.000006>
fcntl(4, F_SETFL, O_RDWR)               = 0 <0.000005>
setsockopt(4, SOL_TCP, TCP_NODELAY, [1], 4) = 0 <0.000006>
poll([{fd=4, events=POLLIN|POLLERR|POLLHUP}], 1, 1471228928) = 1 ([{fd=4, revents=POLLIN}]) <1.122287>



Looks like a connection to db server in same LAN taking time.

It looks like poll takes more than 1 sec. Is this a network issue?

-Raj

Last edited by pludi; 09-18-2011 at 03:06 PM..
# 2  
Old 09-17-2011
poll is waiting on the socket to get something sent to it. If there are a lot of waits, there can be a network latency issue. Usually I suspect the code as the culprit first, then look at the network.

And yes, if you routinely have 1+ second waits on receiving data, then something somewhere is way wrong.
# 3  
Old 09-17-2011
I see nothing wrong with the trace (copied below with an other formatting):
Code:
           connect(4, {sa_family=AF_INET, sin_port=htons(3306), sin_addr=inet_addr("XX.XX.XX.XX")}, 16) = -1 EINPROGRESS 
           (Operation now in progress) 
<0.000035> poll([{fd=4, events=POLLIN|POLLOUT|POLLERR|POLLHUP}], 1, 2000) = 1 ([{fd=4, revents=POLLOUT}]) 
<0.000120> getsockopt(4, SOL_SOCKET, SO_ERROR, [8589934592], [4]) = 0 
<0.000006> fcntl(4, F_SETFL, O_RDWR) = 0 
<0.000005> setsockopt(4, SOL_TCP, TCP_NODELAY, [1], 4) = 0 
<0.000006> poll([{fd=4, events=POLLIN|POLLERR|POLLHUP}], 1, 1471228928) = 1 ([{fd=4, revents=POLLIN}]) 
<1.122287>

First, the client tries to connect to the server using (probably) non blocking socket. Upon receiving EINPROGRESS, it then polls() on the socket for connection completion with a max timeout of 2s. Very soon, the connection completes. The clients set then various options on the socket, and calls again poll() with a timeout of 1471228.928s, which completes after 1.12s with event input data received. This is fine.

Question: Is the timeout of 1471228.928s really intended?
# 4  
Old 09-17-2011
No, its not intented. in php mysql client timeout set to 4 secs only. So scripts should not wait more than 4 secs. i can see large number of delayed poll() calls, few are above 10 secs. Do you think its a bug in mysql client?

-Raj




Quote:
Originally Posted by NH2
I see nothing wrong with the trace (copied below with an other formatting):
Code:
           connect(4, {sa_family=AF_INET, sin_port=htons(3306), sin_addr=inet_addr("XX.XX.XX.XX")}, 16) = -1 EINPROGRESS 
           (Operation now in progress) 
<0.000035> poll([{fd=4, events=POLLIN|POLLOUT|POLLERR|POLLHUP}], 1, 2000) = 1 ([{fd=4, revents=POLLOUT}]) 
<0.000120> getsockopt(4, SOL_SOCKET, SO_ERROR, [8589934592], [4]) = 0 
<0.000006> fcntl(4, F_SETFL, O_RDWR) = 0 
<0.000005> setsockopt(4, SOL_TCP, TCP_NODELAY, [1], 4) = 0 
<0.000006> poll([{fd=4, events=POLLIN|POLLERR|POLLHUP}], 1, 1471228928) = 1 ([{fd=4, revents=POLLIN}]) 
<1.122287>

First, the client tries to connect to the server using (probably) non blocking socket. Upon receiving EINPROGRESS, it then polls() on the socket for connection completion with a max timeout of 2s. Very soon, the connection completes. The clients set then various options on the socket, and calls again poll() with a timeout of 1471228.928s, which completes after 1.12s with event input data received. This is fine.

Question: Is the timeout of 1471228.928s really intended?
# 5  
Old 09-18-2011
Quote:
Originally Posted by rajan007
No, its not intented. in php mysql client timeout set to 4 secs only. So scripts should not wait more than 4 secs. i can see large number of delayed poll() calls, few are above 10 secs. Do you think its a bug in mysql client?

-Raj
I do not know.

If the mysql interface you're using is well-known, chance is that either you made a mistake when using the interface or the interface has a (probably known) bug. If you can prove that everything you're doing everything right at your layer, but not at the layer below, then pass the ticket "down" Smilie

/Lew
# 6  
Old 09-20-2011
Thanks. Issue suddenly started happening after we moved to a new mysql server. So it must not be client issue.

-Raj
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Programming

c programming system call

newPerm = oldPerm & ~0100; where oldPerm holds the value of st_mode from the system call stat(). When I try and compile every line where ive attempted to do these operations gives the warning "parameter names without declaration types in function declaration". what could be the problem? the... (2 Replies)
Discussion started by: bjhum33
2 Replies

2. Programming

[C] exec system call

Hi again ;) Now I want to make a program that will execute the programs with exec, asking the user if he wants the program to run in background or foreground. scanf("%c",&caracter); if (caracter=='y'){ printf("Has decidido ejecutarlo en background\n"); if((pid=fork())==0) {// fork para... (3 Replies)
Discussion started by: lamachejo
3 Replies

3. Programming

need help with system call

hi everyone i wrote a system call and compiled the kernel succesfully... my system call is in a file in the kernel folder named my_syscall1.c (kernel/my_syscall1.c) the header file for this system call i added it in the folder include like this include/my_syscall1/my_syscall1.h my problem is... (2 Replies)
Discussion started by: demis87
2 Replies

4. Programming

system call

I have a cgi script which is called after certain time interval, which has this: system ("ls -l /tmp/cgic* | grep -v \"cgicsave.env\" | awk '{print $5}'"); During the execution of this script,the output is 0 sometimes. But due to this the system call is not working at all and doesnt o/p... (2 Replies)
Discussion started by: xs2punit
2 Replies

5. Programming

C:system call

Hi I'm studing the system call. I've written a small program that return the time spent in doing some operations. Now I'd like to write one that return the time spent in user mode of a process. I'm reading that i should use the tms struct: clock_t times(struct tms *buf); struct tms {... (2 Replies)
Discussion started by: Dedalus
2 Replies

6. Shell Programming and Scripting

system call

Hi, How to write a system calls in a script ? > cd $HOME > ls -ltr thanks in advance.. (10 Replies)
Discussion started by: hegdeshashi
10 Replies

7. Programming

c system call

How the c compiler differentiates the system calls and function calls? (1 Reply)
Discussion started by: rangaswamy
1 Replies

8. UNIX for Advanced & Expert Users

how to differentiate system call from library call

Hi, Ho do I differentiate system call from library call? for example if I am using chmod , how do I find out if it is a system call or library call? Thanks Muru (2 Replies)
Discussion started by: muru
2 Replies

9. Programming

Problem in system call

Dear Friends, I write a c program to list the directories recursively. For this I write a function called my_readdir to read the content of directory. For this I use read system call it returns -1, then I use readdir system call it gives comment terminated error or segmentation... (1 Reply)
Discussion started by: spmlingam
1 Replies

10. Programming

semclt system call ???

hi mates, What is the : semctl system call for? any example will be helpful and be appreciated. cya and thanx abdul (2 Replies)
Discussion started by: abdul
2 Replies
Login or Register to Ask a Question