Skip to Content.
Sympa Menu

freetds - Re: [freetds] Connection Pool - Max number of fields in a select query

freetds AT lists.ibiblio.org

Subject: FreeTDS Development Group

List archive

Chronological Thread  
  • From: Shaun Craig <s.craig AT andronics.com>
  • To: s.craig AT andronics.com, FreeTDS Development Group <freetds AT lists.ibiblio.org>
  • Subject: Re: [freetds] Connection Pool - Max number of fields in a select query
  • Date: Thu, 06 Oct 2005 13:16:18 +0100

Think I may have cracked it, well I hope so. In the following file the blocksize was manually set to 512 which was the reason my query was failing as its size was over it. The following files have been set to 512 and I changed them to 1024 and my query run through ok with no problems.

files:

/* src/pool/member.c
tds_set_packet(login, 512); //changed to 1024
tds = tds_alloc_socket(context, 512); //changed to 1024

/* src/pool/user.c
tds_env_change(tds, 4, NULL, "512"); //changed to 1024

/* src/pool/pool.h
#define BLOCKSIZ 512 //changed to 1024

Whats confusing me is when I run the pool and watch the query going through it, the pool still says block size 512 although now we go past the 01f0 and up.

Is there any danger me changing the blocksize to 1024 or have I changed it in to many places?

Shaun.


Shaun Craig wrote:

Yep. I don't use the pool myself, but it looks like you need to change
"max pool conn" in pool.conf. $ grep MAX_POOL_CONN include/* src/*/*.c
src/pool/config.c:#define POOL_STR_MAX_POOL_CONN "max pool conn"
src/pool/config.c: } else if (!strcmp(option,
POOL_STR_MAX_POOL_CONN)) {
src/pool/member.c: fprintf(stderr, "No idle members left, increase
MAX_POOL_CONN\n");

$ grep pool.conf include/* src/*/*.c
include/tds_configs.h:#define FREETDS_POOLCONFFILE FREETDS_SYSCONFDIR
TDS_SDIR_SEPARATOR "pool.conf"

--jkl



I've tried uping my max pool connections but the query still fails, I've looked at the data going through the pool and noticed something.

0000 01 01 01 fa 00 00 00 00 53 45 4c 45 43 54 20 56 |........SELECT....|
0010 65 68 69 63 6c 65 73 2e 56 65 68 69 63 6c 65 49 |...stuff here....|
0020 44 2c 20 56 65 68 69 63 6c 65 73 2e 43 75 73 74 |...stuff here....|
0030 6f 6d 65 72 49 44 2c 20 4c 61 74 69 74 75 64 65 |...stuff here....|
0040 2c 20 4c 6f 6e 67 69 74 75 64 65 2c 20 4e 53 45 |...stuff here....|
0050 57 2c 20 4f 64 6f 6d 65 74 65 72 2c 20 43 61 6c |...stuff here....|
0060 6c 53 69 67 6e 2c 20 45 6d 61 69 6c 2c 20 53 4d |...stuff here....|
0070 53 45 6d 61 69 6c 2c 20 44 54 2c 20 53 74 6f 70 |...stuff here....|
0080 70 65 64 52 65 70 6f 72 74 54 69 6d 65 2c 20 55 |...stuff here....|
0090 73 65 64 49 6e 44 65 6d 6f 2c 20 43 75 73 74 6f |...stuff here....|
00a0 6d 65 72 2e 54 69 6d 65 5a 6f 6e 65 49 44 2c 20 |...stuff here.... |
00b0 56 65 68 69 63 6c 65 73 2e 52 65 70 6f 72 74 49 |...stuff here....|
00c0 6e 74 65 72 76 61 6c 2c 20 43 75 73 74 6f 6d 65 |...stuff here....|
00d0 72 2e 4e 61 6d 65 2c 20 43 75 73 74 6f 6d 65 72 |...stuff here....|
00e0 2e 4a 6f 75 72 6e 65 79 54 79 70 65 2c 20 56 65 |...stuff here....|
00f0 68 69 63 6c 65 73 2e 53 68 6f 77 4a 6f 75 72 6e |...stuff here....|
0100 65 79 54 79 70 65 20 46 52 4f 4d 20 56 65 68 69 |...stuff here....|
0110 63 6c 65 53 74 61 74 75 73 2c 20 56 65 68 69 63 |...stuff here....|
0120 6c 65 73 2c 20 4d 6f 64 65 6d 2c 20 43 75 73 74 |...stuff here....|
0130 6f 6d 65 72 20 57 48 45 52 45 20 56 65 68 69 63 |...stuff here....|
0140 6c 65 73 2e 56 65 68 69 63 6c 65 49 44 20 3d 20 |...stuff here.... |
0150 56 65 68 69 63 6c 65 53 74 61 74 75 73 2e 56 65 |...stuff here....|
0160 68 69 63 6c 65 49 44 20 41 4e 44 20 56 65 68 69 |...stuff here....|
0170 63 6c 65 73 2e 43 75 73 74 6f 6d 65 72 49 44 20 |...stuff here.... |
0180 3d 20 43 75 73 74 6f 6d 65 72 2e 43 75 73 74 6f |...stuff here....|
0190 6d 65 72 49 44 20 41 4e 44 20 28 4d 6f 64 65 6d |...stuff here....|
01a0 31 49 44 20 3d 20 4d 6f 64 65 6d 49 44 20 4f 52 |...stuff here....|
01b0 20 4d 6f 64 65 6d 32 49 44 20 3d 20 4d 6f 64 65 | ...stuff here....|
01c0 6d 49 44 20 4f 52 20 4d 6f 64 65 6d 33 49 44 20 |...stuff here.... |
01d0 3d 20 4d 6f 64 65 6d 49 44 29 20 41 4e 44 20 41 |...stuff here....|
01e0 64 64 72 65 73 73 20 3d 20 27 33 35 30 33 38 39 |..stuff = '350389|
*01f0* 38 33 34 36 34 33 39 38 36 27 |834643986'|

A query will run ok as long as it fits inside the line *01f0*, but if I increase the fields and past this line it starts another part from 0000 again and the query fails at dbsqlexec(dbconn), below is an example of what I mean.

0000 01 01 01 fa 00 00 00 00 53 45 4c 45 43 54 20 56 |........SELECT....|
0010 65 68 69 63 6c 65 73 2e 56 65 68 69 63 6c 65 49 |...stuff here....|
etc..........
01e0 44 20 3d 20 4d 6f 64 65 6d 49 44 29 20 41 4e 44 |...stuff here....|
*01f0* 20 41 64 64 72 65 73 73 20 3d 20 27 33 35 30 33 |...stuff = '3503|

*0000* 01 01 00 14 00 00 00 00 38 39 38 33 34 36 34 33 |........89834643|
0010 39 38 36 27 |986'|

No open connections left, opening member number 1
deassigning user from member 1

I know believe its the size of the query the connection pool cant handle, uping the connections doesnt matter as the query still fails. I've looked at changing a few things in freetds.conf but havn't had any success. There must be a size set somewhere in the connection pool code setting a max size of 01f0 (496). I could be wrong but there's something fishy if the query can pass through tsql ok and not the pool.

Shaun.



------------------------------------------------------------------------

Subject:
Connection Pool - Max number of fields in a select query
From:
Shaun Craig <s.craig AT andronics.com>
Date:
Wed, 05 Oct 2005 16:29:13 +0100
To:
FreeTDS Development Group <freetds AT lists.ibiblio.org>

To:
FreeTDS Development Group <freetds AT lists.ibiblio.org>


Hi,

I'm running a multi table select query with 17 fields through my connection pool which works fine, when I try add another few fields to the query the connection pool hangs with message:

No idle members left, increase MAX_POOL_CONN
Not enough free members...placing user in WAIT

The new query with extra fields executes no problem through tsql so I take it some setting somewhere needs to be changed for my connection pool, I've had a look at freetds.conf, pool.conf files but not sure thats what I have to change.

Any help would be appreciated.

Shaun.

------------------------------------------------------------------------

_______________________________________________
FreeTDS mailing list
FreeTDS AT lists.ibiblio.org
http://lists.ibiblio.org/mailman/listinfo/freetds



--
Shaun Craig
Andronics Ltd. Tel: 02871273118
Web: http://www.andronics.co.uk





Archive powered by MHonArc 2.6.24.

Top of Page