|
List Info
Thread: 1.2.4 Performance Issue
|
|
| 1.2.4 Performance Issue |
  United States |
2007-10-18 08:52:04 |
|
We are having a performance issue where getting a group listing is
taking an inordinate amount of time (~ 10 seconds) for a set of 120 or so
groups, with one group having over 7000 members and a few others with 700
members. We have set up the LDAP query to only return the group name
(RDN). However, Penrose appears to construct the entire entry in response
to this query, which takes a long time (it parses on the order of 16000 rows). Our
database reports that returning the data from the SQL query takes less than a
second, so we don’t think it’s a database problem.
This query is rather common in our production scenario, so I’d
like to find a way to speed this up, whether by preventing Penrose from
creating the whole entry or some kind of (memory) caching. Persistent
caching is not an option, and since the database doesn̵7;t seem to be the
bottleneck anyway, doesn̵7;t seem that useful. Group memberships are
changed daily, and I’ve been told not to cache for too long (think
minutes) because one of the problems Penrose solves for us is (near-)real-time
updates. Any ideas?
My group mapping looks something like this:
<entry dn=”gidNumber=…,ou=groups, dc=blah>
<oc>groupOfNames</oc>
<at
name=”gidNumber221;, rid=”;true”;>
<variable>ug.GROUPNAME</variable>
</at>
<at
name=”cn”>
<expression>return
ug.GROUPNAME + “ Wiki Group̶1;</expression>
</at>
<at
name=”description”>
<expression>221;The
group for the wiki called “ + ug.GROUPNAME</expression>
</at>
<at
name=”member”;>
<expression
foreach=”ug.EMAILR21; variable = “email”>
return
8220;mail=” + email + “, ou=users, dc=blah221;;
</expression>
</at>
<source
name=R21;ug”;>
<source-name>ug</source-name>
<field
name=̶1;GROUPNAME”>
<variable>gidNumber</variable>
</field>
<field
name=̶1;EMAILR21;>
<expression
foreach=”member”; var=”;um”>
int
i = um.indexOf(“=8221;);
int
j = um.indexOf(“,8221;, i+1);
if(i
> 0 and j > 0)
return
um.substring(i+1, j);
else
return
um;
</expression>
</field>
</source>
</entry>
The source “ug” looks like this:
<source name=̶1;ug”>
<connection-name>MyConnection</connection-name>
<field
name=̶1;EMAILR21; type=̶1;CHAR̶1; primaryKey=”true” length=221;60̶1;/>
<field
name=̶1;GROUPNAME” type=̶1;CHAR̶1; primaryKey=”true”
length=̶1;”/>
<parameter>
<param-name>loadingMethod</param-name>
<param-value>loadAll</param-value>
</parameter>
</source>
The SQL generated from this on the group query is quite
straightforward:
SELECT DISTINCT EMAIL, GROUPNAME FROM UG where GROUPNAME is not NULL
order by GROUPNAME, EMAIL
Thanks,
Rich
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "safehaus" group. To post to this group, send email to safehaus googlegroups.com To unsubscribe from this group, send email to safehaus-unsubscribe googlegroups.com For more options, visit this group at http://groups.google.com/group/safehaus?hl=en -~----------~----~----~----~------~----~------~--~---
|
[1]
|
|
|
about | contact Other archives ( Real Estate discussion Medical topics )
|