Forum .LRN Q&A: Re: Help Needed in Setting up .LRN to Scale

Collapse
Posted by Janine Ohmer on
-- What is the request info of ds for simply login into the system?

Request Information
Main Site : Developer Support : Request Information

Parameters

Request Start Time: 
2004-04-08 17:59:39

Request Completion Time: 
2004-04-08 17:59:41

Request Duration: 
2215 ms

IP: 
18.170.5.196

Method: 
GET

URL: 
/dotlrn/index

Query: 
(empty)

Request Processor

+49.4 ms: Applied transformation from /web/product/www / dotlrn/index -> ? - 7.5 ms
+63.3 ms: Served file /web/product/packages/dotlrn/www/index.adp with adp_parse_ad_conn_file - 2146.0 ms
+2211.2 ms: Applied GET filter: (for /dotlrn/index ds_trace_filter) - 10.2 ms
returned filter_ok

show RP debugging information

Comments

rp_handler: trying rp_serve_abstract_file /web/product/www / dotlrn/index
rp_handler: not found
rp_handler: trying rp_serve_abstract_file /web/product/packages/dotlrn/www / index

Headers

Host: 
athena2.uni-heidelberg.de

Accept: 
*/*

Accept-Language: 
en

Pragma: 
no-cache

Connection: 
Keep-Alive

Referer: 
http://athena2.uni-heidelberg.de/register/?blocale=en%5fUS&return%5furl=%2fdotlrn%2findex

User-Agent: 
Mozilla/4.0 (compatible; MSIE 5.23; Mac_PowerPC)

UA-OS: 
MacOS

UA-CPU: 
PPC

Cookie: 
ad_session_id=45199%2c110325%2c1%20%7b31%2010812456245179%20E459FB42B0DD8685A1F56F45645651CB19A532BA6BBDC8%7d; ad_user_login=110325%2c145636226%2cC4D30F674%20%7b531%201081468779%2071A84256603EB939973A0131D86AFB873DBA547E82B%7d

Extension: 
Security/Remote-Passphrase

Output Headers

Expires: 
Thu, 08 Apr 2004 15:59:41 GMT

Pragma: 
no-cache

Cache-Control: 
no-cache

Content-Type: 
text/html; charset=utf-8

MIME-Version: 
1.0

Date: 
Thu, 08 Apr 2004 15:59:41 GMT

Server: 
AOLserver/3.3.1+ad13

Content-Length: 
18207

Connection: 
close

Database Requests


  Duration  
  Pool  
Command

  1 ms  
  pool2  
gethandle (returned nsdb0)

  4 ms  
  pool2  
dbqd.acs-tcl.tcl.acs-permissions-procs.permission::permission_p_not_cached.select_permission_p: 0or1row nsdb0

            select 1
            from dual
            where 't' = acs_permission.permission_p(:object_id, :party_id, :privilege)



  3 ms  
  pool2  
dbqd.dotlrn.tcl.dotlrn-security-procs.dotlrn::user_p.select_count: 0or1row nsdb0

            select count(*)
            from dual
            where exists (select 1
                          from dotlrn_users
                          where user_id = :user_id)



  4 ms  
  pool2  
dbqd.dotlrn.tcl.community-procs.dotlrn_community::get_all_communities_by_user.select_communities_by_user: select nsdb0

            select dotlrn_communities_full.*
            from dotlrn_communities_full,
                dotlrn_member_rels_approved
            where dotlrn_communities_full.community_id = dotlrn_member_rels_approved.community_id
            and dotlrn_member_rels_approved.user_id = :user_id



  1 ms  
  pool2  
getrow nsdb0


  6 ms  
  pool2  
dbqd.acs-tcl.tcl.acs-permissions-procs.permission::permission_p_not_cached.select_permission_p: 0or1row nsdb0

            select 1
            from dual
            where 't' = acs_permission.permission_p(:object_id, :party_id, :privilege)



  3 ms  
  pool2  
dbqd.dotlrn.tcl.dotlrn-procs.dotlrn::get_portal_id_not_cached.select_user_portal_id: 0or1row nsdb0

            select portal_id
            from dotlrn_users
            where user_id = :user_id



  4 ms  
  pool2  
dbqd.acs-tcl.tcl.acs-permissions-procs.permission::permission_p_not_cached.select_permission_p: 0or1row nsdb0

            select 1
            from dual
            where 't' = acs_permission.permission_p(:object_id, :party_id, :privilege)



  4 ms  
  pool2  
dbqd.acs-tcl.tcl.acs-permissions-procs.permission::permission_p_not_cached.select_permission_p: 0or1row nsdb0

            select 1
            from dual
            where 't' = acs_permission.permission_p(:object_id, :party_id, :privilege)



  4 ms  
  pool2  
dbqd.new-portal.tcl.portal-procs.portal::render.portal_select: 0or1row nsdb0

            select portals.name,
                  portals.portal_id,
                  portals.theme_id,
                  portal_layouts.layout_id,
                  portal_layouts.filename as layout_filename,
                  portal_pages.page_id
            from portals,
                portal_pages,
                portal_layouts
            where portal_pages.sort_key = :sort_key
            and portal_pages.portal_id = :portal_id
            and portal_pages.portal_id = portals.portal_id
            and portal_pages.layout_id = portal_layouts.layout_id



  3 ms  
  pool2  
dbqd.new-portal.tcl.portal-procs.portal::render.element_select: select nsdb0

            select portal_element_map.element_id,
                  portal_element_map.region,
                  portal_element_map.sort_key
            from portal_element_map,
                portal_pages
            where portal_pages.portal_id = :portal_id
            and portal_element_map.page_id = :page_id
            and portal_element_map.page_id = portal_pages.page_id
            and portal_element_map.state != 'hidden'
            order by portal_element_map.region,
                    portal_element_map.sort_key



  1 ms  
  pool2  
getrow nsdb0


  1 ms  
  pool2  
getrow nsdb0


  1 ms  
  pool2  
getrow nsdb0


  1 ms  
  pool2  
getrow nsdb0


  1 ms  
  pool2  
getrow nsdb0


  1 ms  
  pool2  
getrow nsdb0


  9 ms  
  pool2  
dbqd.new-portal.tcl.portal-procs.portal::evaluate_element.element_select: 0or1row nsdb0

            select pem.element_id,
                  pem.datasource_id,
                  pem.state,
                  pet.filename as filename,
                  pet.resource_dir as resource_dir,
                  pem.pretty_name as pretty_name,
                  pd.name as ds_name
            from portal_element_map pem,
                portal_element_themes pet,
                portal_datasources pd
            where pet.theme_id = :theme_id
            and pem.element_id = :element_id
            and pem.datasource_id = pd.datasource_id



  3 ms  
  pool2  
dbqd.new-portal.tcl.portal-procs.portal::element_params_not_cached.params_select: select nsdb0

            select key,
                  value
            from portal_element_parameters
            where element_id = :element_id



  1 ms  
  pool2  
getrow nsdb0


  1 ms  
  pool2  
getrow nsdb0


  1 ms  
  pool2  
getrow nsdb0


  1 ms  
  pool2  
getrow nsdb0


  1 ms  
  pool2  
getrow nsdb0


  1 ms  
  pool2  
getrow nsdb0


  6 ms  
  pool2  
dbqd.acs-tcl.tcl.acs-permissions-procs.permission::permission_p_not_cached.select_permission_p: 0or1row nsdb0

            select 1
            from dual
            where 't' = acs_permission.permission_p(:object_id, :party_id, :privilege)



  5 ms  
  pool2  
dbqd.dotlrn.www.dotlrn-main-portlet.select_communities: select nsdb0

            select dotlrn_communities_all.*,
                  dotlrn_community.url(dotlrn_communities_all.community_id) as url,
                  decode(dotlrn_communities_all.community_type, 'dotlrn_community', 'dotlrn_community',
                                                            'dotlrn_club', 'dotlrn_club',
                                                            'dotlrn_class_instance') as simple_community_type,
                  decode(dotlrn_community_admin_p(dotlrn_communities_all.community_id, dotlrn_member_rels_approved.user_id),'f',0,1) as admin_p,
                  tree.tree_level(dotlrn_communities_all.tree_sortkey) as tree_level,
                  nvl((select tree.tree_level(dotlrn_community_types.tree_sortkey)
                        from dotlrn_community_types
                        where dotlrn_community_types.community_type = dotlrn_communities_all.community_type), 0) as community_type_level
            from dotlrn_communities_all,
                dotlrn_member_rels_approved
            where dotlrn_communities_all.community_id = dotlrn_member_rels_approved.community_id
            and dotlrn_member_rels_approved.user_id = :user_id
            order by dotlrn_communities_all.tree_sortkey



  1 ms  
  pool2  
getrow nsdb0


  4 ms  
  pool2  
dbqd.new-portal.tcl.portal-procs.portal::evaluate_element.element_select: 0or1row nsdb0

            select pem.element_id,
                  pem.datasource_id,
                  pem.state,
                  pet.filename as filename,
                  pet.resource_dir as resource_dir,
                  pem.pretty_name as pretty_name,
                  pd.name as ds_name
            from portal_element_map pem,
                portal_element_themes pet,
                portal_datasources pd
            where pet.theme_id = :theme_id
            and pem.element_id = :element_id
            and pem.datasource_id = pd.datasource_id



  3 ms  
  pool2  
dbqd.new-portal.tcl.portal-procs.portal::element_params_not_cached.params_select: select nsdb0

            select key,
                  value
            from portal_element_parameters
            where element_id = :element_id



  1 ms  
  pool2  
getrow nsdb0


  1 ms  
  pool2  
getrow nsdb0


  1 ms  
  pool2  
getrow nsdb0


  1 ms  
  pool2  
getrow nsdb0


  1 ms  
  pool2  
getrow nsdb0


  1 ms  
  pool2  
getrow nsdb0


  1 ms  
  pool2  
getrow nsdb0


  1 ms  
  pool2  
getrow nsdb0


  6 ms  
  pool2  
dbqd.acs-tcl.tcl.acs-permissions-procs.permission::permission_p_not_cached.select_permission_p: 0or1row nsdb0

            select 1
            from dual
            where 't' = acs_permission.permission_p(:object_id, :party_id, :privilege)



  4 ms  
  pool2  
dbqd.forums-portlet.www.forums-portlet.select_forums: select nsdb0

            select forums_forums.package_id,
            acs_object.name(apm_package.parent_id(forums_forums.package_id)) as parent_name,
            (select site_node.url(site_nodes.node_id)
            from site_nodes
            where site_nodes.object_id = forums_forums.package_id) as url,
            forums_forums.forum_id,
            forums_forums.name,
            case when last_modified > (sysdate - 1) then 't' else 'f' end as new_p
            from forums_forums_enabled forums_forums,
            acs_objects
            where acs_objects.object_id = forums_forums.forum_id and
            forums_forums.package_id in (0)
            order by parent_name,
            forums_forums.name



  1 ms  
  pool2  
getrow nsdb0


  4 ms  
  pool2  
dbqd.new-portal.tcl.portal-procs.portal::evaluate_element.element_select: 0or1row nsdb0

            select pem.element_id,
                  pem.datasource_id,
                  pem.state,
                  pet.filename as filename,
                  pet.resource_dir as resource_dir,
                  pem.pretty_name as pretty_name,
                  pd.name as ds_name
            from portal_element_map pem,
                portal_element_themes pet,
                portal_datasources pd
            where pet.theme_id = :theme_id
            and pem.element_id = :element_id
            and pem.datasource_id = pd.datasource_id



  3 ms  
  pool2  
dbqd.new-portal.tcl.portal-procs.portal::element_params_not_cached.params_select: select nsdb0

            select key,
                  value
            from portal_element_parameters
            where element_id = :element_id



  1 ms  
  pool2  
getrow nsdb0


  1 ms  
  pool2  
getrow nsdb0


  1 ms  
  pool2  
getrow nsdb0


  1 ms  
  pool2  
getrow nsdb0


  1 ms  
  pool2  
getrow nsdb0


  1 ms  
  pool2  
getrow nsdb0


  1 ms  
  pool2  
getrow nsdb0


  1 ms  
  pool2  
getrow nsdb0


  4 ms  
  pool2  
dbqd.faq-portlet.www.faq-portlet.select_faqs: select nsdb0

            select acs_objects.context_id as package_id,
                  acs_object.name(apm_package.parent_id(acs_objects.context_id)) as parent_name,
                  (select site_node.url(site_nodes.node_id)
                    from site_nodes
                    where site_nodes.object_id = acs_objects.context_id) as url,
                  faqs.faq_id,
                  faqs.faq_name
            from faqs,
                acs_objects
            where faqs.faq_id = acs_objects.object_id
            and faqs.disabled_p <> 't'
            and acs_objects.context_id in (0)
            order by lower(faq_name)



  1 ms  
  pool2  
getrow nsdb0


  4 ms  
  pool2  
dbqd.new-portal.tcl.portal-procs.portal::evaluate_element.element_select: 0or1row nsdb0

            select pem.element_id,
                  pem.datasource_id,
                  pem.state,
                  pet.filename as filename,
                  pet.resource_dir as resource_dir,
                  pem.pretty_name as pretty_name,
                  pd.name as ds_name
            from portal_element_map pem,
                portal_element_themes pet,
                portal_datasources pd
            where pet.theme_id = :theme_id
            and pem.element_id = :element_id
            and pem.datasource_id = pd.datasource_id



  3 ms  
  pool2  
dbqd.new-portal.tcl.portal-procs.portal::element_params_not_cached.params_select: select nsdb0

            select key,
                  value
            from portal_element_parameters
            where element_id = :element_id



  1 ms  
  pool2  
getrow nsdb0


  1 ms  
  pool2  
getrow nsdb0


  1 ms  
  pool2  
getrow nsdb0


  1 ms  
  pool2  
getrow nsdb0


  1 ms  
  pool2  
getrow nsdb0


  1 ms  
  pool2  
getrow nsdb0


  1 ms  
  pool2  
getrow nsdb0


  10 ms  
  pool2  
dbqd.news-portlet.www.news-portlet.select_news_items: select nsdb0

            select news_items_approved.package_id,
                  acs_object.name(apm_package.parent_id(news_items_approved.package_id)) as parent_name,
                  (select site_node.url(site_nodes.node_id)
                    from site_nodes
                    where site_nodes.object_id = news_items_approved.package_id) as url,
                  news_items_approved.item_id,
                  news_items_approved.publish_title,
                  to_char(news_items_approved.publish_date, 'YYYY-MM-DD HH24:MI:SS') as publish_date_ansi
            from news_items_approved
            where news_items_approved.publish_date < sysdate
            and (news_items_approved.archive_date >= sysdate or news_items_approved.archive_date is null)
            and news_items_approved.package_id in (0)
            order by parent_name,
                    news_items_approved.publish_date desc,
                    news_items_approved.publish_title




  2 ms  
  pool2  
getrow nsdb0


  5 ms  
  pool2  
dbqd.new-portal.tcl.portal-procs.portal::evaluate_element.element_select: 0or1row nsdb0

            select pem.element_id,
                  pem.datasource_id,
                  pem.state,
                  pet.filename as filename,
                  pet.resource_dir as resource_dir,
                  pem.pretty_name as pretty_name,
                  pd.name as ds_name
            from portal_element_map pem,
                portal_element_themes pet,
                portal_datasources pd
            where pet.theme_id = :theme_id
            and pem.element_id = :element_id
            and pem.datasource_id = pd.datasource_id



  3 ms  
  pool2  
dbqd.new-portal.tcl.portal-procs.portal::element_params_not_cached.params_select: select nsdb0

            select key,
                  value
            from portal_element_parameters
            where element_id = :element_id



  1 ms  
  pool2  
getrow nsdb0


  1 ms  
  pool2  
getrow nsdb0


  1 ms  
  pool2  
getrow nsdb0


  1 ms  
  pool2  
getrow nsdb0


  1 ms  
  pool2  
getrow nsdb0


  1 ms  
  pool2  
getrow nsdb0


  1 ms  
  pool2  
getrow nsdb0


  1 ms  
  pool2  
getrow nsdb0


  1 ms  
  pool2  
getrow nsdb0


  1 ms  
  pool2  
getrow nsdb0


  7 ms  
  pool2  
dbqd.acs-tcl.tcl.acs-permissions-procs.permission::permission_p_not_cached.select_permission_p: 0or1row nsdb0

            select 1
            from dual
            where 't' = acs_permission.permission_p(:object_id, :party_id, :privilege)



  3 ms  
  pool2  
dbqd.acs-tcl.tcl.acs-permissions-procs.permission::permission_p_not_cached.select_permission_p: 0or1row nsdb0

            select 1
            from dual
            where 't' = acs_permission.permission_p(:object_id, :party_id, :privilege)



  6 ms  
  pool2  
dbqd.acs-tcl.tcl.acs-permissions-procs.permission::permission_p_not_cached.select_permission_p: 0or1row nsdb0

            select 1
            from dual
            where 't' = acs_permission.permission_p(:object_id, :party_id, :privilege)



  73 ms  
  pool2  
dbqd.calendar.www.view-one-day-display.select_day_items: select nsdb0

        select nvl(e.name, a.name) as name,
        nvl(e.status_summary, a.status_summary) as status_summary,
        e.event_id as item_id,
        (select type from cal_item_types where item_type_id= ci.item_type_id) as item_type,
        cals.calendar_id,
        cals.calendar_name
from    acs_activities a,
        acs_events e,
        timespans s,
        time_intervals t,
        cal_items ci,
        calendars cals
where    e.timespan_id = s.timespan_id
and      s.interval_id = t.interval_id
and      e.activity_id = a.activity_id
and      start_date between
        to_date(:current_date_system,:ansi_date_format) and
        (to_date(:current_date_system,:ansi_date_format) + (24 - 1/3600)/24)
and      ci.cal_item_id = e.event_id
and      to_char(start_date, 'HH24:MI') = '00:00'
and      to_char(end_date, 'HH24:MI') = '00:00'
and      cals.calendar_id = ci.on_which_calendar
and      e.event_id = ci.cal_item_id
and on_which_calendar in (110394) and (cals.private_p='f' or (cals.private_p='t' and cals.owner_id= :user_id))



  1 ms  
  pool2  
getrow nsdb0


  205 ms  
  pool2  
dbqd.calendar.www.view-one-day-display.select_day_items_with_time: select nsdb0

        select to_char(start_date, :ansi_date_format) as ansi_start_date,
        to_char(end_date, :ansi_date_format) as ansi_end_date,
        nvl(e.name, a.name) as name,
        nvl(e.status_summary, a.status_summary) as status_summary,
        e.event_id as item_id,
        (select type from cal_item_types where item_type_id= ci.item_type_id) as item_type,
        cals.calendar_id,
        cals.calendar_name
from    acs_activities a,
        acs_events e,
        timespans s,
        time_intervals t,
        cal_items ci,
        calendars cals
where    e.timespan_id = s.timespan_id
and      s.interval_id = t.interval_id
and      e.activity_id = a.activity_id
and      start_date between
        to_date(:current_date_system,:ansi_date_format) and
        (to_date(:current_date_system,:ansi_date_format) + (:end_display_hour - 1/3600)/:end_display_hour)
and      ci.cal_item_id = e.event_id
and      (to_char(start_date, 'HH24:MI') <> '00:00' or
          to_char(end_date, 'HH24:MI') <> '00:00')
and      cals.calendar_id = ci.on_which_calendar
and      e.event_id = ci.cal_item_id
and on_which_calendar in (110394) and (cals.private_p='f' or (cals.private_p='t' and cals.owner_id= :user_id))
order by to_char(start_date,'HH24')



  1 ms  
  pool2  
getrow nsdb0


  3 ms  
  pool2  
dbqd.acs-lang.tcl.locale-procs.lang::user::timezone_no_cache.select_user_timezone: 0or1row nsdb0

        select timezone
        from  user_preferences
        where  user_id = :user_id



  4 ms  
  pool2  
dbqd.calendar.www.view-one-day-display.select_day_info: 0or1row nsdb0

select  to_char(to_date(:current_date, 'yyyy-mm-dd'), 'Day, DD Month YYYY')
as day_of_the_week,
to_char((to_date(:current_date, 'yyyy-mm-dd') - 1), 'yyyy-mm-dd')
as yesterday,
to_char((to_date(:current_date, 'yyyy-mm-dd') + 1), 'yyyy-mm-dd')
as tomorrow
from    dual



  4 ms  
  pool2  
dbqd.dotlrn.tcl.dotlrn-security-procs.dotlrn::user_p.select_count: 0or1row nsdb0

            select count(*)
            from dual
            where exists (select 1
                          from dotlrn_users
                          where user_id = :user_id)



  3 ms  
  pool2  
dbqd.dotlrn.tcl.dotlrn-security-procs.dotlrn::user_p.select_count: 0or1row nsdb0

            select count(*)
            from dual
            where exists (select 1
                          from dotlrn_users
                          where user_id = :user_id)



  3 ms  
  pool2  
dbqd.new-portal.tcl.portal-procs.portal::navbar.list_page_nums_select: select nsdb0

            select pretty_name,
                  sort_key as page_num
            from portal_pages
            where portal_id = :portal_id
            order by sort_key



  1 ms  
  pool2  
getrow nsdb0


  130 ms  
  pool2  
getrow nsdb0


  1 ms  
  pool2  
getrow nsdb0


  1 ms  
  pool2  
getrow nsdb0


  53 ms  
  pool2  
dbqd.acs-tcl.tcl.acs-permissions-procs.permission::permission_p_not_cached.select_permission_p: 0or1row nsdb0

            select 1
            from dual
            where 't' = acs_permission.permission_p(:object_id, :party_id, :privilege)



  5 ms  
  pool2  
dbqd.curriculum.tcl.misc-procs.curriculum::enabled_elements.element_ns_set_list: select nsdb0


            select  cee.element_id,
                    cc.curriculum_id,
                    cc.name as curriculum_name,
                    cee.url,
                    cee.external_p,
                    cee.name
            from    (select  curriculum_id
                    from    cu_curriculums
                    where    package_id = :package_id
                    MINUS
                    select  curriculum_id
                    from    cu_user_curriculum_map
                    where    user_id = :user_id
                    and      package_id = :package_id) desired,
                    workflow_cases cas,
                    workflow_case_fsm cfsm,
                    cu_curriculums cc,
                    cu_elements_enabled cee
            where    cc.package_id = :package_id
            and      desired.curriculum_id = cc.curriculum_id
            and      cc.curriculum_id = cee.curriculum_id
            and      cas.object_id = cc.curriculum_id
            and      cfsm.case_id = cas.case_id
            and      cfsm.current_state = :state_id
            order by cc.sort_key,
                    cee.sort_key




  1 ms  
  pool2  
getrow nsdb0


  1 ms  
  pool2  
releasehandle nsdb0

  704 ms  
(total)

Developer Information

3 database commands totalling 19 ms

page served in  203 ms
mailto:dotlrn@uni-hd.de

-- Does the above make a significant difference if webct is shut down?

No, Carl tried this a few days ago and saw no difference at all.

-- How are the config.tcl settings?

ns_log notice "nsd.tcl: starting to read config file..."

######################################################################
#
# Instance-specific settings
# These default settings will only work in limited circumstances
# Two servers with default settings cannot run on the same host
#
######################################################################

#---------------------------------------------------------------------
# change to 80 and 443 for production use
set httpport                  80
set httpsport                443

# The hostname and address should be set to actual values.
#set hostname                  [ns_info hostname]
set hostname                  athena2.uni-heidelberg.de

#set address                  [ns_info address]
set address                  129.206.100.143

set server                    "product"
set servername                "Athena - dotLRN UNI HD"

set serverroot                "/web/${server}"

#---------------------------------------------------------------------
# which database do you want? postgres or oracle
set database              oracle

set db_name              $server

if { $database == "oracle" } {
    set db_password          "itsgonenow"
} else {
    set db_host              localhost
    set db_port              ""
    set db_user              $server
}

#---------------------------------------------------------------------
# if debug is false, all debugging will be turned off
set debug false

set homedir                  /usr/local/aolserver
set bindir                    [file dirname [ns_info nsd]]

#---------------------------------------------------------------------
# which modules should be loaded?  Missing modules break the server, so
# don't uncomment modules unless they have been installed.

ns_section ns/server/${server}/modules
ns_param  nssock            ${bindir}/nssock.so
ns_param  nslog              ${bindir}/nslog.so
ns_param  nssha1            ${bindir}/nssha1.so
ns_param  nscache            ${bindir}/nscache.so
ns_param  nsrewrite          ${bindir}/nsrewrite.so

#---------------------------------------------------------------------
# nsopenssl will fail unless the cert files are present as specified
# later in this file, so it's disabled by default
ns_param  nsopenssl          ${bindir}/nsopenssl.so

# Full Text Search
#ns_param  nsfts              ${bindir}/nsfts.so

# PAM authentication
ns_param  nspam              ${bindir}/nspam.so

# LDAP authentication
#ns_param  nsldap            ${bindir}/nsldap.so

# These modules aren't used in standard OpenACS installs
#ns_param  nsperm            ${bindir}/nsperm.so
#ns_param  nscgi              ${bindir}/nscgi.so
#ns_param  nsjava            ${bindir}/libnsjava.so

if { [ns_info version] >= 4 } {
    # Required for AOLserver 4.x
    ns_param  nsdb              ${bindir}/nsdb.so
} else {
    # Required for AOLserver 3.x
    ns_param  libtdom            ${bindir}/libtdom.so
}

#---------------------------------------------------------------------
#
# Rollout email support
#
# These procs help manage differing email behavior on
# dev/staging/production.
#
#---------------------------------------------------------------------

ns_section ns/server/${server}/acs/acs-rollout-support

# EmailDeliveryMode can be:
#  default:  Email messages are sent in the usual manner.
#  log:      Email messages are written to the server's error log.
#  redirect: Email messages are redirected to the addresses specified
#            by the EmailRedirectTo parameter.  If this list is absent
#            or empty, email messages are written to the server's error log.
#  filter:  Email messages are sent to in the usual manner if the
#            recipient appears in the EmailAllow parameter, otherwise they
#            are logged.

#ns_param  EmailDeliveryMode redirect
#ns_param  EmailRedirectTo    mailto:somenerd@yourdomain.test, mailto:othernerd@yourdomain.tes
t
#ns_param  EmailAllow        mailto:somenerd@yourdomain.test,mailto:othernerd@yourdomain.test

######################################################################
#
# End of instance-specific settings
#
# Nothing below this point need be changed in a default install.
#
######################################################################

#---------------------------------------------------------------------
#
# AOLserver's directories. Autoconfigurable.
#
#---------------------------------------------------------------------

#---------------------------------------------------------------------
# Where are your pages going to live ?
#
set pageroot                  ${serverroot}/www
set directoryfile            index.tcl,index.adp,index.html,index.htm

#---------------------------------------------------------------------
# Global server parameters
#---------------------------------------------------------------------

ns_section ns/parameters
ns_param  serverlog          ${serverroot}/log/error.log
ns_param  home              $homedir
ns_param  maxkeepalive      0
ns_param  logroll            on
ns_param  maxbackup          5
ns_param  debug              $debug

ns_param  HackContentType    1
ns_param  URLCharset        utf-8
ns_param  OutputCharset      utf-8
ns_param  HttpOpenCharset    utf-8
ns_param  DefaultCharset    utf-8

#---------------------------------------------------------------------
# Thread library (nsthread) parameters
#---------------------------------------------------------------------

ns_section ns/threads
ns_param  mutexmeter        true      ;# measure lock contention
# The per-thread stack size must be a multiple of 8k for AOLServer to run under M
acOS X
ns_param  stacksize          [expr 128 * 8192]

#
# MIME types.
#
#  Note: AOLserver already has an exhaustive list of MIME types, but in
#  case something is missing you can add it here.
#

ns_section ns/mimetypes
ns_param  Default            text/plain
ns_param  NoExtension        text/plain
ns_param  .pcd              image/x-photo-cd
ns_param  .prc              application/x-pilot
ns_param  .xls              application/vnd.ms-excel
ns_param  .doc              application/vnd.ms-word

#
# Tcl Configuration
#
ns_section ns/server/${server}/tcl
ns_param  library            ${serverroot}/tcl
ns_param  autoclose          on
ns_param  debug              $debug

#---------------------------------------------------------------------
#
# Server-level configuration
#
#  There is only one server in AOLserver, but this is helpful when multiple
#  servers share the same configuration file.  This file assumes that only
#  one server is in use so it is set at the top in the "server" Tcl variable
#  Other host-specific values are set up above as Tcl variables, too.
#
#---------------------------------------------------------------------

ns_section ns/servers
ns_param  $server            $servername

#
# Server parameters
#
ns_section ns/server/${server}
ns_param  directoryfile      $directoryfile
ns_param  pageroot          $pageroot
ns_param  maxconnections    5
ns_param  maxdropped        0
ns_param  maxthreads        5
ns_param  minthreads        5
ns_param  threadtimeout      120
ns_param  globalstats        false    ;# Enable built-in statistics
ns_param  urlstats          false    ;# Enable URL statistics
ns_param  maxurlstats        1000    ;# Max number of URL's to do stats on
#ns_param  directoryadp      $pageroot/dirlist.adp ;# Choose one or the other
#ns_param  directoryproc      _ns_dirlist          ;#  ...but not both!
#ns_param  directorylisting  fancy              ;# Can be simple or fancy

#
# Special HTTP pages
#

ns_param  NotFoundResponse  "/global/file-not-found.html"
ns_param  ServerBusyResponse "/global/busy.html"
ns_param  ServerInternalErrorResponse "/global/error.html"

#---------------------------------------------------------------------
#
# ADP (AOLserver Dynamic Page) configuration
#
#---------------------------------------------------------------------

ns_section ns/server/${server}/adp
ns_param  map                /*.adp    ;# Extensions to parse as ADP's
#ns_param  map                "/*.html" ;# Any extension can be mapped
ns_param  enableexpire      false    ;# Set "Expires: now" on all ADP's
ns_param  enabledebug        $debug    ;# Allow Tclpro debugging with "?debug"
ns_param  defaultparser      fancy

ns_section ns/server/${server}/adp/parsers
ns_param  fancy    ".adp"

#---------------------------------------------------------------------
#
# Socket driver module (HTTP)  -- nssock
#
#---------------------------------------------------------------------

ns_section ns/server/${server}/module/nssock
ns_param  timeout            120
ns_param  address            $address
ns_param  hostname          $hostname
ns_param  port              $httpport

#---------------------------------------------------------------------
#
# OpenSSL
#
#---------------------------------------------------------------------

ns_section "ns/server/${server}/module/nsopenssl"

ns_param ModuleDir            ${serverroot}/etc/certs

# NSD-driven connections:
ns_param ServerPort                $httpsport
ns_param ServerHostname            $hostname
ns_param ServerAddress            $address
ns_param ServerCertFile            certfile.pem
#ns_param ServerCertFile            athena2.pem
ns_param ServerKeyFile            keyfile.pem
ns_param ServerProtocols          "SSLv2, SSLv3, TLSv1"
ns_param ServerCipherSuite        "ALL:!ADH:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+E
XP"
ns_param ServerSessionCache        false
ns_param ServerSessionCacheID      1
ns_param ServerSessionCacheSize    512
ns_param ServerSessionCacheTimeout 300
#ns_param ServerPeerVerify          true
ns_param ServerPeerVerify          false
ns_param ServerPeerVerifyDepth    3
ns_param ServerCADir              ca
ns_param ServerCAFile              ca.pem
ns_param ServerTrace              false

# For listening and accepting SSL connections via Tcl/C API:
ns_param SockServerCertFile              certfile.pem
#ns_param SockServerCertFile              athena2.pem
ns_param SockServerKeyFile              keyfile.pem
ns_param SockServerProtocols            "SSLv2, SSLv3, TLSv1"
ns_param SockServerCipherSuite          "ALL:!ADH:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SS
Lv2:+EXP"
ns_param SockServerSessionCache          false
ns_param SockServerSessionCacheID        2
ns_param SockServerSessionCacheSize      512
ns_param SockServerSessionCacheTimeout  300
#ns_param SockServerPeerVerify            true
ns_param SockServerPeerVerify            false
ns_param SockServerPeerVerifyDepth      3
ns_param SockServerCADir                internal_ca
ns_param SockServerCAFile                internal_ca.pem
ns_param SockServerTrace                false

# Outgoing SSL connections
ns_param SockClientCertFile              certfile.pem
#ns_param SockClientCertFile              athena2.pem
ns_param SockClientKeyFile              keyfile.pem
ns_param SockClientProtocols            "SSLv2, SSLv3, TLSv1"
ns_param SockClientCipherSuite          "ALL:!ADH:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SS
Lv2:+EXP"
ns_param SockClientSessionCache          false
ns_param SockClientSessionCacheID        3
ns_param SockClientSessionCacheSize      512
ns_param SockClientSessionCacheTimeout  300
ns_param SockClientPeerVerify            true
ns_param SockClientPeerVerify            false
ns_param SockServerPeerVerifyDepth      3
ns_param SockClientCADir                ca
ns_param SockClientCAFile                ca.pem
ns_param SockClientTrace                false

# OpenSSL library support:
#ns_param RandomFile          /some/file
ns_param SeedBytes            1024

#---------------------------------------------------------------------
#
# Database drivers
# The database driver is specified here.
# Make sure you have the driver compiled and put it in {aolserverdir}/bin
#
#---------------------------------------------------------------------

ns_section "ns/db/drivers"
if { $database == "oracle" } {
    ns_param  ora8          ${bindir}/ora8.so
} else {
    ns_param  postgres      ${bindir}/nspostgres.so  ;# Load PostgreSQL driver
}

#
# Database Pools: This is how AOLserver  ``talks'' to the RDBMS. You need
# three for OpenACS: main, log, subquery. Make sure to replace ``yourdb''
# and ``yourpassword'' with the actual values for your db name and the
# password for it, if needed.

# AOLserver can have different pools connecting to different databases
# and even different different database servers.
#
ns_section ns/db/pools
ns_param  pool1              "Pool 1"
ns_param  pool2              "Pool 2"
ns_param  pool3              "Pool 3"

ns_section ns/db/pool/pool1
ns_param  maxidle            1000000000
ns_param  maxopen            1000000000
ns_param  connections        5
ns_param  verbose            $debug
ns_param  extendedtableinfo  true
ns_param  logsqlerrors      $debug
if { $database == "oracle" } {
    ns_param  driver            ora8
    ns_param  datasource        {}
    ns_param  user              $db_name
    ns_param  password          $db_password
} else {
    ns_param  driver            postgres
    ns_param  datasource        ${db_host}:${db_port}:${db_name}
    ns_param  user              $db_user
    ns_param  password          ""
}

ns_section ns/db/pool/pool2
ns_param  maxidle            1000000000
ns_param  maxopen            1000000000
ns_param  connections        5
ns_param  verbose            $debug
ns_param  extendedtableinfo  true
ns_param  logsqlerrors      $debug
if { $database == "oracle" } {
    ns_param  driver            ora8
    ns_param  datasource        {}
    ns_param  user              $db_name
    ns_param  password          $db_password
} else {
    ns_param  driver            postgres
    ns_param  datasource        ${db_host}:${db_port}:${db_name}
    ns_param  user              $db_user
    ns_param  password          ""
}

ns_section ns/db/pool/pool3
ns_param  maxidle            1000000000
ns_param  maxopen            1000000000
ns_param  connections        5
ns_param  verbose            $debug
ns_param  extendedtableinfo  true
ns_param  logsqlerrors      $debug
if { $database == "oracle" } {
    ns_param  driver            ora8
    ns_param  datasource        {}
    ns_param  user              $db_name
    ns_param  password          $db_password
} else {
    ns_param  driver            postgres
    ns_param  datasource        ${db_host}:${db_port}:${db_name}
    ns_param  user              $db_user
    ns_param  password          ""
}

ns_section ns/server/${server}/db
ns_param  pools              "*"
ns_param  defaultpool        pool1

ns_section ns/server/${server}/redirects
ns_param  404                "global/file-not-found.html"
ns_param  403                "global/forbidden.html"

#---------------------------------------------------------------------
#
# Access log -- nslog
#
#---------------------------------------------------------------------

ns_section ns/server/${server}/module/nslog
ns_param  debug              false
ns_param  dev                false
ns_param  enablehostnamelookup false
ns_param  file              ${serverroot}/log/${server}.log
ns_param  logcombined        true
ns_param  extendedheaders    COOKIE
#ns_param  logrefer          false
#ns_param  loguseragent      false
ns_param  maxbackup          1000
ns_param  rollday            *
ns_param  rollfmt            %Y-%m-%d-%H:%M
ns_param  rollhour          0
ns_param  rollonsignal      true
ns_param  rolllog            true

#---------------------------------------------------------------------
#
# nsjava - aolserver module that embeds a java virtual machine.  Needed to
#          support webmail.  See http://nsjava.sourceforge.net for further
#          details. This may need to be updated for OpenACS4 webmail
#
#---------------------------------------------------------------------

ns_section ns/server/${server}/module/nsjava
ns_param  enablejava        off  ;# Set to on to enable nsjava.
ns_param  verbosejvm        off  ;# Same as command line -debug.
ns_param  loglevel          Notice
ns_param  destroyjvm        off  ;# Destroy jvm on shutdown.
ns_param  disablejitcompiler off
ns_param  classpath          /usr/local/jdk/jdk118_v1/lib/classes.zip:${bindir}/
nsjava.jar:${pageroot}/webmail/java/activation.jar:${pageroot}/webmail/java/mail.
jar:${pageroot}/webmail/java

#---------------------------------------------------------------------
#
# CGI interface -- nscgi, if you have legacy stuff. Tcl or ADP files inside
# AOLserver are vastly superior to CGIs. I haven't tested these params but they
# should be right.
#
#---------------------------------------------------------------------

#ns_section "ns/server/${server}/module/nscgi"
#      ns_param  map "GET  /cgi-bin/ /web/$server/cgi-bin"
#      ns_param  map "POST /cgi-bin/ /web/$server/cgi-bin"
#      ns_param  Interps CGIinterps

#ns_section "ns/interps/CGIinterps"
#      ns_param .pl "/usr/bin/perl"

#---------------------------------------------------------------------
#
# PAM authentication
#
#---------------------------------------------------------------------

ns_section ns/server/${server}/module/nspam
ns_param  PamDomain          "aolserver"

ns_log notice "nsd.tcl: finished reading config file."

-- What are the authentication, kernel and main site parameter settings under /acs-admin/?

Are there particular values you're interested in?  I tried to copy/paste the pages but the values in the edit boxes don't copy.  I won't type them all up unless you really want to see them all...

How many authorities exists for your installation? Does it make a difference if you deactivate your URZ Heidelberg or Extern authority?

I haven't tried this;  I don't know much about external authentication and it sounds like something I probably can't do during the day.  But since virtually every page in the site is slow, this is an unlikely culprit, isn't it?

Collapse
Posted by Andrew Piskorski on
Janine, your AOLserver threadtimeout of 120 s is much too low. You do have maxthreads set the same as minthreads (which in this case is probably good), but I don't remember whether that means the threadtimeout setting is ignored our not. Best to be safe and set threadtimeout to something much higher...

maxconnections, maxthreads, and minthreads all set to 5 also seems low, but if this is just for the Dev server and you plan to bump those up for Production then that's probably ok for now.

The 2.2 or 2.9 s seconds shown above for the login page is mostly meaningless, as the time is all in adp_parse_ad_conn_file, which is normal on the very first hit of that page for the thread. The real question is how often does hitting that page give you the slow 2 s adp_parse_ad_conn_file time? Overall, it should be a very low percentage of times.

Normally, after you restart the server, it should run adp_parse_ad_conn_file once per page per thread, only, and then never again. But if your AOLserver is constantly creating and destroying new threads (because it's misconfigured), then adp_parse_ad_conn_file could be sucking up lots and lots of time - much more than just the 2 s per hit you saw on the login page, some pages can take 10 or 20 s or more, especially with slow Sparc CPUs.

That's all AOLserver Tuning 101 of course, but it is an easy mistake to make. From painful experience, I am very suspicious of your 120 s threadtimeout. I suspect that all 5 of your AOLserver threads are being killed and restarted every two minutes, which is an absolute performance killer - you really want to be sure you've ruled that out.