Forum Discussion
gmtiwill_127449
Nimbostratus
Jul 09, 2004get_al_active_connections() crashes iControlPortal.cgi
Whenever I execute the following code, iControlPortal.cgi crahses. The error in the syslog is pid 381 (iControlPortal.c), uid 1: exited on signal 6 (core dumped). The code is as follows:
my $soap = SOAP::Lite
-> uri('urn:iControl:ITCMLocalLB/Connections')
-> proxy("https://$sHost:$sPort/iControl/iControlPortal.cgi"
);
my $resp = $soap->get_all_active_connections(
SOAP::Data->name(mirror_flag=> 0),
);
Am I doing something wrong here? I am able to execute this method against a BigIP that does not have any connections, but consistently get a 500 Internal Server Error when executing against the production SLB.
Thanks,
Will
- bknotwell_12713Historic F5 AccountCurrently, *most* connection and persistence information can be mirrored between a redundant pair. In the past, I wrote an emulator for shining a little light on the mirroring process. Lately, it has occurred to me that this same sort of thing--connection add and delete events--might be useful for customers for data mining purposes.
- gmtiwill_127449
Nimbostratus
Joe, - gmtiwill_127449
Nimbostratus
We're trying to sniff out client IP's that have (what we deem to be) excessively high connection and transfer rates (e.g. web spiders). . - Absolutely, the get_all type methods that can return an enormous list are the ones that tend to cause problems. It's a classic chicken and egg problem. App developers don't want to make 10000 calls for 10000 objects, they want to make 1. But for large result sets, the 1 method call causes problems. We are working at segmenting these types of operations in new platforms but that brings with it it's own set of problems..
- This was an example of us providing too much functionality early on. Basically the connection table is too large in a production environment and the memory overhead for building the SOAP response. We've put limits on the memory overhead of the iControl processes to help limit the overall memory usage and it seems that this causes that limit to be reached. If you look at it, let's say there are 10000 active connections, and each connections requires ~1k of XML data for the SOAP response, we are looking at 1k*10000b=10M Bytes of payload. This would more than likely cause the client undo hardship in parsing as well.. The real issue is that on our 4.x platforms we have a CORBA interface that the SOAP interfaces act as a proxy to and this causes another level of memory allocation which isn't quite as large as the SOAP usage, but close.
- Currently there isn't a way on 4.x to achieve this without using the Connections class. We are working on solutions for segmenting the large amount of data but it currently isn't available in 4.x.
- gmtiwill_127449
Nimbostratus
Thanks for the reply. I agree that mirroring traffic somewhere else and using another utility to create the connection counts would work best, but the timeline is the major consideration (mgmt. wants this up in the next day or two). If we do eventually go that route, we would want to utilize layer 7 information to do additional filtering (e.g. filter OUT any connections that have "normal" user-agent strings) so we would likely be doing more than just counting connections but I think utilities like snort can provide this information rather natively. - No problem. I just sent of a message to one of the developers asking about the best way to alter individual persistence records. Odd are that you will have to use a Class within a Rule to accomplish this. I'll post back when I have an answer.
- bknotwell_12713Historic F5 Account[quote:85423441dc="Joe"]No problem. I just sent of a message to one of the developers asking about the best way to alter individual persistence records. Odd are that you will have to use a Class within a Rule to accomplish this. I'll post back when I have an answer.
if (client_addr one of spider_class) { use (pool spider_pool) } else { use (pool happy_customer_pool) }
- bknotwell_12713Historic F5 Account[quote:e72e26c272="gmtiwill"]What Interface / Method should be used for querying the BigIP for AOL mega proxies? I don't see this in the SDK.
!/usr/bin/env python from F5Proxy import ProxyFactory,loadEnv loadEnv('./iControl.env',globals(),locals()) factory = ProxyFactory(user,passwd,host,protocol) print factory('ITCMLocalLB/Class').get_address_class(class_name = 'aol')
Recent Discussions
Related Content
DevCentral Quicklinks
* Getting Started on DevCentral
* Community Guidelines
* Community Terms of Use / EULA
* Community Ranking Explained
* Community Resources
* Contact the DevCentral Team
* Update MFA on account.f5.com
Discover DevCentral Connects