Web server optimisation

  • Hi, we are having serious performance problems with vBulletin. We have reverted all the code and styles back to the originals. Under load, the pages just start to hang and never complete loading. I was performance testing the site with 10 connections. In the test I was just going to the homepage, showthread.php?t=(a selection of valid thread numbers) and then going to page 2 within that thread. We are running PHP as an ISAPI extension to IIS and have added the vBulletin site as a different application pool in IIS. Please help? I am happy to provide any more information/logs if you require. Attached is the % processor time of the the two web servers (the top two lines) and the DB server (the lowest line). Also attached is a graph of the number of requests/second on the vertical axis and the number of seconds on the horizontal graph. You can see that after 250 seconds of 10 connections, all requests are hanging and are not completed hence 0 requests/second.

    Below is the information you requested...

    1. We have two web servers in a web farm and 1 DB server. The web servers run 3 web sites.

    2. Each web server is:
    CPU: Dual Intel Xeon 3GHZ
    Memory: 1GB RAM
    Hard drive: 20GB
    Windows Server 2003 SP1
    IIS ver6
    PHP ver5.2.0

    The DB server is:
    CPU: Dual Intel Xeon 5160 3GHZ
    Memory: 4GB RAM
    Hard drive: 270GB
    Windows Server 2003 (64 bit) SP1
    MySQL ver 5.0.34 64 bit edition


    3. VB Version 3.6.4

    4. We have InnoDB tables

    5. We installed MySQL by extracting the NoInstall zip file and used the my-large.ini as our config file (my.ini).

    6. 35,000 posts over 3000 different threads in 5 months.

    7.


    [client]
    port = 3306
    socket = /tmp/mysql.sock

    [mysqld]
    port = 3306
    socket = /tmp/mysql.sock
    skip-locking
    key_buffer = 256M
    max_allowed_packet = 1M
    table_cache = 256
    sort_buffer_size = 1M
    read_buffer_size = 1M
    read_rnd_buffer_size = 4M
    myisam_sort_buffer_size = 64M
    thread_cache_size = 8
    query_cache_size= 16M
    thread_concurrency = 8

    basedir=C:/Program Files/MySQL
    datadir=D:/Program Files/MySQL/Data

    [mysqldump]
    quick
    max_allowed_packet = 16M

    [mysql]
    no-auto-rehash

    [isamchk]
    key_buffer = 128M
    sort_buffer_size = 128M
    read_buffer = 2M
    write_buffer = 2M

    [myisamchk]
    key_buffer = 128M
    sort_buffer_size = 128M
    read_buffer = 2M
    write_buffer = 2M

    [mysqlhotcopy]
    interactive-timeout


    8.

    +---------------------------------+------------------------------------------+
    Variable_name Value
    +---------------------------------+------------------------------------------+
    auto_increment_increment 1
    auto_increment_offset 1
    automatic_sp_privileges ON
    back_log 50
    basedir C:Program FilesMySQL
    binlog_cache_size 32768
    bulk_insert_buffer_size 8388608
    character_set_client latin1
    character_set_connection latin1
    character_set_database latin1
    character_set_filesystem binary
    character_set_results latin1
    character_set_server latin1
    character_set_system utf8
    character_sets_dir C:Program FilesMySQLsharecharsets
    collation_connection latin1_swedish_ci
    collation_database latin1_swedish_ci
    collation_server latin1_swedish_ci
    completion_type 0
    concurrent_insert 1
    connect_timeout 5
    datadir D:Program FilesMySQLData
    date_format %Y-%m-%d
    datetime_format %Y-%m-%d %H:%i:%s
    default_week_format 0
    delay_key_write ON
    delayed_insert_limit 100
    delayed_insert_timeout 300
    delayed_queue_size 1000
    div_precision_increment 4
    engine_condition_pushdown OFF
    expire_logs_days 0
    flush OFF
    flush_time 1800
    ft_boolean_syntax + -><()~*:""&
    ft_max_word_len 84
    ft_min_word_len 4
    ft_query_expansion_limit 20
    ft_stopword_file (built-in)
    group_concat_max_len 1024
    have_archive YES
    have_bdb NO
    have_blackhole_engine NO
    have_compress YES
    have_crypt NO
    have_csv NO
    have_dynamic_loading YES
    have_example_engine NO
    have_federated_engine NO
    have_geometry YES
    have_innodb YES
    have_isam NO
    have_merge_engine YES
    have_ndbcluster NO
    have_openssl DISABLED
    have_query_cache YES
    have_raid NO
    have_rtree_keys YES
    have_symlink YES
    init_connect
    init_file
    init_slave
    innodb_additional_mem_pool_size 1048576
    innodb_autoextend_increment 8
    innodb_buffer_pool_awe_mem_mb 0
    innodb_buffer_pool_size 8388608
    innodb_checksums ON
    innodb_commit_concurrency 0
    innodb_concurrency_tickets 500
    innodb_data_file_path ibdata1:10M:autoextend
    innodb_data_home_dir
    innodb_doublewrite ON
    innodb_fast_shutdown 1
    innodb_file_io_threads 4
    innodb_file_per_table OFF
    innodb_flush_log_at_trx_commit 1
    innodb_flush_method
    innodb_force_recovery 0
    innodb_lock_wait_timeout 50
    innodb_locks_unsafe_for_binlog OFF
    innodb_log_arch_dir
    innodb_log_archive OFF
    innodb_log_buffer_size 1048576
    innodb_log_file_size 5242880
    innodb_log_files_in_group 2
    innodb_log_group_home_dir .
    innodb_max_dirty_pages_pct 90
    innodb_max_purge_lag 0
    innodb_mirrored_log_groups 1
    innodb_open_files 300
    innodb_rollback_on_timeout OFF
    innodb_support_xa ON
    innodb_sync_spin_loops 20
    innodb_table_locks ON
    innodb_thread_concurrency 8
    innodb_thread_sleep_delay 10000
    interactive_timeout 28800
    join_buffer_size 131072
    key_buffer_size 268435456
    key_cache_age_threshold 300
    key_cache_block_size 1024
    key_cache_division_limit 100
    language C:Program FilesMySQLshareenglish
    large_files_support ON
    large_page_size 0
    large_pages OFF
    lc_time_names en_US
    license GPL
    local_infile ON
    log OFF
    log_bin ON
    log_bin_trust_function_creators OFF
    log_error .ds-sql01.err
    log_queries_not_using_indexes OFF
    log_slave_updates OFF
    log_slow_queries OFF
    log_warnings 1
    long_query_time 10
    low_priority_updates OFF
    lower_case_file_system ON
    lower_case_table_names 1
    max_allowed_packet 1047552
    max_binlog_cache_size 4294967295
    max_binlog_size 1073741824
    max_connect_errors 10
    max_connections 100
    max_delayed_threads 20
    max_error_count 64
    max_heap_table_size 16777216
    max_insert_delayed_threads 20
    max_join_size 4294967295
    max_length_for_sort_data 1024
    max_prepared_stmt_count 16382
    max_relay_log_size 0
    max_seeks_for_key 4294967295
    max_sort_length 1024
    max_sp_recursion_depth 0
    max_tmp_tables 32
    max_user_connections 0
    max_write_lock_count 4294967295
    multi_range_count 256
    myisam_data_pointer_size 6
    myisam_max_sort_file_size 2147483647
    myisam_recover_options OFF
    myisam_repair_threads 1
    myisam_sort_buffer_size 67108864
    myisam_stats_method nulls_unequal
    named_pipe OFF
    net_buffer_length 16384
    net_read_timeout 30
    net_retry_count 10
    net_write_timeout 60
    new OFF
    old_passwords OFF
    open_files_limit 622
    optimizer_prune_level 1
    optimizer_search_depth 62
    pid_file D:Program FilesMySQLDatads-sql01.pid
    port 3306
    preload_buffer_size 32768
    protocol_version 10
    query_alloc_block_size 8192
    query_cache_limit 1048576
    query_cache_min_res_unit 4096
    query_cache_size 16777216
    query_cache_type ON
    query_cache_wlock_invalidate OFF
    query_prealloc_size 8192
    range_alloc_block_size 2048
    read_buffer_size 1044480
    read_only OFF
    read_rnd_buffer_size 4190208
    relay_log_purge ON
    relay_log_space_limit 0
    rpl_recovery_rank 0
    secure_auth OFF
    shared_memory OFF
    shared_memory_base_name MYSQL
    server_id 1
    skip_external_locking ON
    skip_networking OFF
    skip_show_database OFF
    slave_compressed_protocol OFF
    slave_load_tmpdir C:WINDOWSTEMP
    slave_net_timeout 3600
    slave_skip_errors OFF
    slave_transaction_retries 10
    slow_launch_time 2
    sort_buffer_size 1048568
    sql_big_selects ON
    sql_mode
    sql_notes ON
    sql_warnings OFF
    ssl_ca
    ssl_capath
    ssl_cert
    ssl_cipher
    ssl_key
    storage_engine MyISAM
    sync_binlog 0
    sync_frm ON
    system_time_zone GMT Standard Time
    table_cache 256
    table_lock_wait_timeout 50
    table_type MyISAM
    thread_cache_size 8
    thread_stack 262144
    time_format %H:%i:%s
    time_zone SYSTEM
    timed_mutexes OFF
    tmp_table_size 33554432
    tmpdir C:WINDOWSTEMP
    transaction_alloc_block_size 8192
    transaction_prealloc_size 4096
    tx_isolation REPEATABLE-READ
    updatable_views_with_limit YES
    version 5.0.34-enterprise-gpl-nt-log
    version_comment MySQL Enterprise Server (GPL)
    version_compile_machine unknown
    version_compile_os Win64
    wait_timeout 28800
    +---------------------------------+------------------------------------------+
    +-----------------------------------+------------+
    Variable_name Value
    +-----------------------------------+------------+
    Aborted_clients 108
    Aborted_connects 2
    Binlog_cache_disk_use 15
    Binlog_cache_use 17830
    Bytes_received 77355964
    Bytes_sent 3707531179
    Com_admin_commands 15504
    Com_alter_db 0
    Com_alter_table 228
    Com_analyze 0
    Com_backup_table 0
    Com_begin 1
    Com_change_db 18851
    Com_change_master 0
    Com_check 0
    Com_checksum 0
    Com_commit 1
    Com_create_db 1
    Com_create_function 0
    Com_create_index 0
    Com_create_table 114
    Com_create_user 0
    Com_dealloc_sql 0
    Com_delete 1435
    Com_delete_multi 0
    Com_do 0
    Com_drop_db 0
    Com_drop_function 0
    Com_drop_index 0
    Com_drop_table 114
    Com_drop_user 0
    Com_execute_sql 0
    Com_flush 0
    Com_grant 0
    Com_ha_close 0
    Com_ha_open 0
    Com_ha_read 0
    Com_help 0
    Com_insert 17640
    Com_insert_select 0
    Com_kill 0
    Com_load 0
    Com_load_master_data 0
    Com_load_master_table 0
    Com_lock_tables 0
    Com_optimize 0
    Com_preload_keys 0
    Com_prepare_sql 0
    Com_purge 0
    Com_purge_before_date 0
    Com_rename_table 0
    Com_repair 0
    Com_replace 3841
    Com_replace_select 0
    Com_reset 0
    Com_restore_table 0
    Com_revoke 0
    Com_revoke_all 0
    Com_rollback 0
    Com_savepoint 0
    Com_select 34713
    Com_set_option 18894
    Com_show_binlog_events 0
    Com_show_binlogs 0
    Com_show_charsets 0
    Com_show_collations 4
    Com_show_column_types 0
    Com_show_create_db 0
    Com_show_create_table 274
    Com_show_databases 10
    Com_show_errors 0
    Com_show_fields 1530
    Com_show_grants 0
    Com_show_innodb_status 0
    Com_show_keys 114
    Com_show_logs 0
    Com_show_master_status 0
    Com_show_ndb_status 0
    Com_show_new_master 0
    Com_show_open_tables 0
    Com_show_privileges 0
    Com_show_processlist 0
    Com_show_slave_hosts 0
    Com_show_slave_status 0
    Com_show_status 5
    Com_show_storage_engines 0
    Com_show_tables 13
    Com_show_triggers 0
    Com_show_variables 44
    Com_show_warnings 0
    Com_slave_start 0
    Com_slave_stop 0
    Com_stmt_close 0
    Com_stmt_execute 0
    Com_stmt_fetch 0
    Com_stmt_prepare 0
    Com_stmt_reset 0
    Com_stmt_send_long_data 0
    Com_truncate 0
    Com_unlock_tables 0
    Com_update 19284
    Com_update_multi 0
    Com_xa_commit 0
    Com_xa_end 0
    Com_xa_prepare 0
    Com_xa_recover 0
    Com_xa_rollback 0
    Com_xa_start 0
    Compression OFF
    Connections 18788
    Created_tmp_disk_tables 1674
    Created_tmp_files 16
    Created_tmp_tables 5162
    Delayed_errors 0
    Delayed_insert_threads 0
    Delayed_writes 0
    Flush_commands 1
    Handler_commit 35661
    Handler_delete 1933
    Handler_discover 0
    Handler_prepare 35660
    Handler_read_first 7144
    Handler_read_key 475447
    Handler_read_next 244557
    Handler_read_prev 62650
    Handler_read_rnd 153410
    Handler_read_rnd_next 4596500
    Handler_rollback 0
    Handler_savepoint 0
    Handler_savepoint_rollback 0
    Handler_update 12453
    Handler_write 280667
    Innodb_buffer_pool_pages_data 492
    Innodb_buffer_pool_pages_dirty 0
    Innodb_buffer_pool_pages_flushed 10125
    Innodb_buffer_pool_pages_free 1
    Innodb_buffer_pool_pages_latched 0
    Innodb_buffer_pool_pages_misc 19
    Innodb_buffer_pool_pages_total 512
    Innodb_buffer_pool_read_ahead_rnd 122
    Innodb_buffer_pool_read_ahead_seq 39
    Innodb_buffer_pool_read_requests 1745391
    Innodb_buffer_pool_reads 1724
    Innodb_buffer_pool_wait_free 0
    Innodb_buffer_pool_write_requests 259177
    Innodb_data_fsyncs 37999
    Innodb_data_pending_fsyncs 0
    Innodb_data_pending_reads 0
    Innodb_data_pending_writes 0
    Innodb_data_read 50368512
    Innodb_data_reads 2951
    Innodb_data_writes 46339
    Innodb_data_written 369760256
    Innodb_dblwr_pages_written 10125
    Innodb_dblwr_writes 1534
    Innodb_log_waits 0
    Innodb_log_write_requests 45366
    Innodb_log_writes 33478
    Innodb_os_log_fsyncs 34644
    Innodb_os_log_pending_fsyncs 0
    Innodb_os_log_pending_writes 0
    Innodb_os_log_written 37386240
    Innodb_page_size 16384
    Innodb_pages_created 965
    Innodb_pages_read 2941
    Innodb_pages_written 10125
    Innodb_row_lock_current_waits 0
    Innodb_row_lock_time 1099
    Innodb_row_lock_time_avg 7
    Innodb_row_lock_time_max 199
    Innodb_row_lock_waits 153
    Innodb_rows_deleted 3534
    Innodb_rows_inserted 43795
    Innodb_rows_read 648616
    Innodb_rows_updated 9894
    Key_blocks_not_flushed 0
    Key_blocks_unused 214339
    Key_blocks_used 779
    Key_read_requests 733100
    Key_reads 6736
    Key_write_requests 59181
    Key_writes 10505
    Last_query_cost 0.000000
    Max_used_connections 40
    Not_flushed_delayed_rows 0
    Open_files 6
    Open_streams 0
    Open_tables 10
    Opened_tables 3711
    Prepared_stmt_count 0
    Qcache_free_blocks 764
    Qcache_free_memory 11003384
    Qcache_hits 112807
    Qcache_inserts 32915
    Qcache_lowmem_prunes 0
    Qcache_not_cached 3663
    Qcache_queries_in_cache 2142
    Qcache_total_blocks 5230
    Questions 248908
    Rpl_status NULL
    Select_full_join 7
    Select_full_range_join 0
    Select_range 11190
    Select_range_check 0
    Select_scan 11982
    Slave_open_temp_tables 0
    Slave_retried_transactions 0
    Slave_running OFF
    Slow_launch_threads 0
    Slow_queries 0
    Sort_merge_passes 4
    Sort_range 2693
    Sort_rows 173172
    Sort_scan 2993
    Ssl_accept_renegotiates 0
    Ssl_accepts 0
    Ssl_callback_cache_hits 0
    Ssl_cipher
    Ssl_cipher_list
    Ssl_client_connects 0
    Ssl_connect_renegotiates 0
    Ssl_ctx_verify_depth 0
    Ssl_ctx_verify_mode 0
    Ssl_default_timeout 0
    Ssl_finished_accepts 0
    Ssl_finished_connects 0
    Ssl_session_cache_hits 0
    Ssl_session_cache_misses 0
    Ssl_session_cache_mode NONE
    Ssl_session_cache_overflows 0
    Ssl_session_cache_size 0
    Ssl_session_cache_timeouts 0
    Ssl_sessions_reused 0
    Ssl_used_session_cache_entries 0
    Ssl_verify_depth 0
    Ssl_verify_mode 0
    Ssl_version
    Table_locks_immediate 105425
    Table_locks_waited 41
    Tc_log_max_pages_used 0
    Tc_log_page_size 0
    Tc_log_page_waits 0
    Threads_cached 7
    Threads_connected 2
    Threads_created 1435
    Threads_running 1
    Uptime 362755
    +-----------------------------------+------------+
    Uptime: 362755 Threads: 2 Questions: 248909 Slow queries: 0 Opens: 3711 Flush tables: 1 Open tables: 10 Queries per second avg: 0.686
    mysqladmin Ver 8.41 Distrib 5.0.34, for Win32 on ia32
    (C) 2000-2006 MySQL AB
    This software comes with ABSOLUTELY NO WARRANTY. This is free software,
    and you are welcome to modify and redistribute it under the GPL license

    Server version 5.0.34-enterprise-gpl-nt-log
    Protocol version 10
    Connection ds-sql01 via TCP/IP
    TCP port 3306
    Uptime: 4 days 4 hours 45 min 55 sec

    Threads: 2 Questions: 248909 Slow queries: 0 Opens: 3711 Flush tables: 1 Open tables: 10 Queries per second avg: 0.686



    9. Our web servers hosts another site that receives traffic. Our DB server has MySQL and SQL Server Standard. MySQL ONLY hosts the vBulletin DB. SQL Server only hosts one database.

    10. Around 5-10 concurrent users on the forums.

    11. You can see the PHP info at http://forums.doggysnaps.com/delete/info.php

    12. No files are reaching the 2GB limit.

    13. We are running Windows so cannot run those commands.


  • I notice that you've got php installed to C:Program FilesPHP

    it is not recommended to install PHP in a directory that contains spaces such as c:Program FilesPHP as it can cause some web servers to crash.

    You may find the following article useful, although the versions are different from current releases, the principles remain the same.

    http://www.ozzu.com/ftopic56303.html

    Regards.:)


  • Same can be said for mysql and windows spaces for

    basedir=C:/Program Files/MySQL
    datadir=D:/Program Files/MySQL/Data

    I'd move mysql to say

    c:/mysql
    d:/mysql/data

    Any reason you're using more resource hogging innodb tables for such a small forum and not using myisam tables ? I'd convert all vB mysql tables back from Innodb to MyISAM and disable Innodb - below my.cnf has skip-innodb line added to disable innodb. Please backup your databases FIRST, then convert from Innodb tables back to MyISAM and then use below suggested my.cnf.

    How are both web + db servers connected exactly ? you connecting via internel network ip address ?

    Try the following in this exact order. You can ignore any of the suggestions that you have already done.

    1. Edit /etc/my.cnf and place the following mysql server settings in /etc/my.cnf and restart mysql server afterwards


    [client]
    port = 3306
    socket = /tmp/mysql.sock

    [mysqld]
    skip-name-resolve
    port = 3306
    socket = /tmp/mysql.sock
    back_log = 50
    skip-innodb
    max_connections = 500
    key_buffer = 80M
    myisam_sort_buffer_size = 64M
    join_buffer_size = 1M
    read_buffer_size = 1M
    sort_buffer_size = 2M
    table_cache = 1500
    thread_cache_size = 256
    wait_timeout = 60
    connect_timeout = 10
    tmp_table_size = 64M
    max_heap_table_size = 64M
    max_allowed_packet = 64M
    max_connect_errors = 10
    read_rnd_buffer_size = 524288
    bulk_insert_buffer_size = 8M
    query_cache_limit = 4M
    query_cache_size = 64M
    query_cache_type = 1
    query_prealloc_size = 65536
    query_alloc_block_size = 131072
    default-storage-engine = MyISAM

    [mysqld_safe]
    open_files_limit = 8192

    [mysqldump]
    quick
    max_allowed_packet = 16M

    [myisamchk]
    key_buffer = 64M
    sort_buffer = 64M
    read_buffer = 16M
    write_buffer = 16M


    2. If you have split web + db servers, ensure web server has dual network cards as outlined at http://www.vbulletin.org/forum/showthread.php?t=111191


  • Have you considered dumping iis and installing apache:confused:, I have vb running on w2k3 apache 2.2 php 5.2.1 and my sql 5.0.27 with phpMyAdmin and all run flawlessly


  • Hi, thanks for those suggestions. I have now installed MySQL and PHP both directly in C:MySQL and C:PHP respectively. It is now going better but it still starts to hang after about 6 mins of 10 simulatenous users requesting only PHP pages. Do you know why after a certain amount of time, it starts to hang. It serves about 10 request/second and then suddenly, it does not serve any more pages. If you request a page the page will be contnually loading. It starts again if I do an IISReset however I obviously can't be running that all the time.

    I thought the log files of vBulletin or PHP would be helpful but both DON'T log any errors.

    My.ini now looks like the following:

    [client]
    port = 3306
    socket = /tmp/mysql.sock

    [mysqld]
    skip-name-resolve
    port = 3306
    socket = /tmp/mysql.sock
    back_log = 50
    max_connections = 500
    key_buffer = 384M
    max_allowed_packet = 64M
    table_cache = 1500
    sort_buffer_size = 2M
    read_buffer_size = 2M
    read_rnd_buffer_size = 524288
    myisam_sort_buffer_size = 64M
    thread_cache_size = 256
    join_buffer_size = 1M
    query_cache_size = 64M
    wait_timeout = 60
    connect_timeout = 10
    tmp_table_size = 64M
    max_heap_table_size = 64M
    max_connect_errors = 100
    bulk_insert_buffer_size = 8M
    query_cache_limit = 4M
    query_cache_type = 1
    query_prealloc_size = 65536
    query_alloc_block_size = 131072
    default-storage-engine = MyISAM
    thread_concurrency = 4

    basedir = C:/MySQL
    datadir=D:/MySQL/Data

    #Logs
    log-bin=D:/MySQL/Logs/UpdateBinLog
    log-error=D:/MySQL/Logs/MySQLErrors
    log-slow-queries=D:/MySQL/Logs/SlowQueries.log

    [mysqld_safe]
    open_files_limit = 8192

    [mysqldump]
    quick
    max_allowed_packet = 16M

    [myisamchk]
    key_buffer = 128M
    sort_buffer_size = 128M
    read_buffer = 16M
    write_buffer = 16M

    [mysql]
    no-auto-rehash

    [mysqlhotcopy]
    interactive-timeout


    PHP.ini now looks like (I've edited out the comments to make it shorter)

    [PHP]

    ;;;;;;;;;;;;;;;;;;;;
    ; Language Options ;
    ;;;;;;;;;;;;;;;;;;;;

    ; Enable the PHP scripting language engine under Apache.
    engine = On

    ; Enable compatibility mode with Zend Engine 1 (PHP 4.x)
    zend.ze1_compatibility_mode = Off

    short_open_tag = Off
    asp_tags = Off
    precision = 14
    y2k_compliance = On
    output_buffering = 4096

    ;output_handler =

    zlib.output_compression = Off
    ;zlib.output_compression_level = -1
    ;zlib.output_handler =

    implicit_flush = Off
    unserialize_callback_func=
    serialize_precision = 100

    allow_call_time_pass_reference = Off
    safe_mode = Off

    safe_mode_gid = Off

    safe_mode_include_dir =
    safe_mode_exec_dir =

    safe_mode_allowed_env_vars = PHP_
    safe_mode_protected_env_vars = LD_LIBRARY_PATH

    ;open_basedir =
    disable_functions =
    disable_classes =

    ; ignore_user_abort = On

    ; realpath_cache_size=16k
    ; realpath_cache_ttl=120

    ;
    ; Misc
    ;
    expose_php = On


    ;;;;;;;;;;;;;;;;;;;
    ; Resource Limits ;
    ;;;;;;;;;;;;;;;;;;;

    max_execution_time = 30 ; Maximum execution time of each script, in seconds
    max_input_time = 60 ; Maximum amount of time each script may spend parsing request data
    memory_limit = 128M ; Maximum amount of memory a script may consume (128MB)


    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    ; Error handling and logging ;
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

    ;Just trying to get error reporting working
    error_reporting = E_ALL

    display_errors = On

    display_startup_errors = On

    log_errors = On

    log_errors_max_len = 1048576

    ignore_repeated_errors = Off

    ignore_repeated_source = Off

    report_memleaks = On

    ;report_zend_debug = 0

    ; Store the last error/warning message in $php_errormsg (boolean).
    track_errors = Off

    ;html_errors = Off

    ;docref_root = "/phpmanual/"
    ;docref_ext = .html

    ; String to output before an error message.
    ;error_prepend_string = ""

    ; String to output after an error message.
    ;error_append_string = "
    "

    ; Log errors to specified file.
    error_log = "D:vBulletinLogsAllPHPErrors.log"

    ; Log errors to syslog (Event Log on NT, not valid in Windows 95).
    error_log = syslog


    ;;;;;;;;;;;;;;;;;
    ; Data Handling ;
    ;;;;;;;;;;;;;;;;;
    ;
    ;arg_separator.input = ";&"

    variables_order = "GPCS"

    register_globals = Off

    register_long_arrays = Off

    register_argc_argv = Off

    auto_globals_jit = On

    ; Maximum size of POST data that PHP will accept.
    post_max_size = 8M

    ; Magic quotes
    ;

    ; Magic quotes for incoming GET/POST/Cookie data.
    magic_quotes_gpc = Off

    ; Magic quotes for runtime-generated data, e.g. data from SQL, from exec(), etc.
    magic_quotes_runtime = Off

    ; Use Sybase-style magic quotes (escape ' with '' instead of ').
    magic_quotes_sybase = Off

    ; Automatically add files before or after any PHP document.
    auto_prepend_file =
    auto_append_file =

    ; As of 4.0b4, PHP always outputs a character encoding by default in
    ; the Content-type: header. To disable sending of the charset, simply
    ; set it to be empty.
    ;
    ; PHP's built-in default is text/html
    default_mimetype = "text/html"
    ;default_charset = "iso-8859-1"

    ; Always populate the $HTTP_RAW_POST_DATA variable.
    ;always_populate_raw_post_data = On


    ;;;;;;;;;;;;;;;;;;;;;;;;;
    ; Paths and Directories ;
    ;;;;;;;;;;;;;;;;;;;;;;;;;

    ; Windows: "path1;path2"
    ;include_path = ".;c:phpincludes"

    ; The root of the PHP pages, used only if nonempty.
    doc_root =

    ; The directory under which PHP opens the script using /~username used only
    ; if nonempty.
    user_dir =

    ; Directory in which the loadable extensions (modules) reside.
    extension_dir ="C:PHPext"

    ; Whether or not to enable the dl() function. The dl() function does NOT work
    ; properly in multithreaded servers, such as IIS or Zeus, and is automatically
    ; disabled on them.
    enable_dl = On

    ; cgi.force_redirect is necessary to provide security running PHP as a CGI under
    ; most web servers. Left undefined, PHP turns this on by default. You can
    ; turn it off here AT YOUR OWN RISK
    ; **You CAN safely turn this off for IIS, in fact, you MUST.**
    ; cgi.force_redirect = 1

    ; if cgi.nph is enabled it will force cgi to always sent Status: 200 with
    ; every request.
    ; cgi.nph = 1

    ; if cgi.force_redirect is turned on, and you are not running under Apache or Netscape
    ; (iPlanet) web servers, you MAY need to set an environment variable name that PHP
    ; will look for to know it is OK to continue execution. Setting this variable MAY
    ; cause security issues, KNOW WHAT YOU ARE DOING FIRST.
    ; cgi.redirect_status_env = ;

    ; FastCGI under IIS (on WINNT based OS) supports the ability to impersonate
    ; security tokens of the calling client. This allows IIS to define the
    ; security context that the request runs under. mod_fastcgi under Apache
    ; does not currently support this feature (03/17/2002)
    ; Set to 1 if running under IIS. Default is zero.
    ; fastcgi.impersonate = 1;

    ; Disable logging through FastCGI connection
    ; fastcgi.log = 0

    ; cgi.rfc2616_headers configuration option tells PHP what type of headers to
    ; use when sending HTTP response code. If it's set 0 PHP sends Status: header that
    ; is supported by Apache. When this option is set to 1 PHP will send
    ; RFC2616 compliant header.
    ; Default is zero.
    ;cgi.rfc2616_headers = 0


    ;;;;;;;;;;;;;;;;
    ; File Uploads ;
    ;;;;;;;;;;;;;;;;

    ; Whether to allow HTTP file uploads.
    file_uploads = On

    ; Temporary directory for HTTP uploaded files (will use system default if not
    ; specified).
    ;upload_tmp_dir =

    ; Maximum allowed size for uploaded files.
    upload_max_filesize = 2M


    ;;;;;;;;;;;;;;;;;;
    ; Fopen wrappers ;
    ;;;;;;;;;;;;;;;;;;

    ; Whether to allow the treatment of URLs (like http:// or ftp://) as files.
    allow_url_fopen = On

    ; Whether to allow include/require to open URLs (like http:// or ftp://) as files.
    allow_url_include = Off

    ; Define the anonymous ftp password (your email address)
    ;from="john@doe.com"

    ; Define the User-Agent string
    ; user_agent="PHP"

    ; Default timeout for socket based streams (seconds)
    default_socket_timeout = 60
    upload_tmp_dir="C:DOCUME~1DAN~1.SUTLOCALS~1Tempphpupload"
    session.save_path="C:DOCUME~1DAN~1.SUTLOCALS~1Tempphpsession"

    ; If your scripts have to deal with files from Macintosh systems,
    ; or you are running on a Mac and need to deal with files from
    ; unix or win32 systems, setting this flag will cause PHP to
    ; automatically detect the EOL character in those files so that
    ; fgets() and file() will work regardless of the source of the file.
    ; auto_detect_line_endings = Off


    ;;;;;;;;;;;;;;;;;;;;;;
    ; Dynamic Extensions ;
    ;;;;;;;;;;;;;;;;;;;;;;
    ;
    ;;;;;;;;;;;;;;;;;;;
    ; Module Settings ;
    ;;;;;;;;;;;;;;;;;;;

    [Date]
    ; Defines the default timezone used by the date functions
    ;date.timezone =

    ;date.default_latitude = 31.7667
    ;date.default_longitude = 35.2333

    ;date.sunrise_zenith = 90.583333
    ;date.sunset_zenith = 90.583333

    [filter]
    ;filter.default = unsafe_raw
    ;filter.default_flags =

    [iconv]
    ;iconv.input_encoding = ISO-8859-1
    ;iconv.internal_encoding = ISO-8859-1
    ;iconv.output_encoding = ISO-8859-1

    [sqlite]
    ;sqlite.assoc_case = 0

    [xmlrpc]
    ;xmlrpc_error_number = 0
    ;xmlrpc_errors = 0

    [Pcre]
    ;pcre.recursion_limit=100000
    ;pcre.backtrack_limit=100000

    [Syslog]
    ; Whether or not to define the various syslog variables (e.g. $LOG_PID,
    ; $LOG_CRON, etc.). Turning it off is a good idea performance-wise. In
    ; runtime, you can define these variables by calling define_syslog_variables().
    define_syslog_variables = Off

    [mail function]
    ; For Win32 only.
    SMTP = localhost
    smtp_port = 25

    ; For Win32 only.
    ;sendmail_from = me@example.com

    ; For Unix only. You may supply arguments as well (default: "sendmail -t -i").
    ;sendmail_path =

    ; Force the addition of the specified parameters to be passed as extra parameters
    ; to the sendmail binary. These parameters will always replace the value of
    ; the 5th parameter to mail(), even in safe mode.
    ;mail.force_extra_parameters =

    [SQL]
    sql.safe_mode = Off

    [ODBC]
    ;odbc.default_db = Not yet implemented
    ;odbc.default_user = Not yet implemented
    ;odbc.default_pw = Not yet implemented

    ; Allow or prevent persistent links.
    odbc.allow_persistent = On

    ; Check that a connection is still valid before reuse.
    odbc.check_persistent = On

    ; Maximum number of persistent links. -1 means no limit.
    odbc.max_persistent = -1

    ; Maximum number of links (persistent + non-persistent). -1 means no limit.
    odbc.max_links = -1

    ; Handling of LONG fields. Returns number of bytes to variables. 0 means
    ; passthru.
    odbc.defaultlrl = 4096

    ; Handling of binary data. 0 means passthru, 1 return as is, 2 convert to char.
    ; See the documentation on odbc_binmode and odbc_longreadlen for an explanation
    ; of uodbc.defaultlrl and uodbc.defaultbinmode
    odbc.defaultbinmode = 1

    [MySQL]
    ; Allow or prevent persistent links.
    mysql.allow_persistent = On

    ; Maximum number of persistent links. -1 means no limit.
    mysql.max_persistent = -1

    ; Maximum number of links (persistent + non-persistent). -1 means no limit.
    mysql.max_links = -1

    ; Default port number for mysql_connect(). If unset, mysql_connect() will use
    ; the $MYSQL_TCP_PORT or the mysql-tcp entry in /etc/services or the
    ; compile-time value defined MYSQL_PORT (in that order). Win32 will only look
    ; at MYSQL_PORT.
    mysql.default_port =

    ; Default socket name for local MySQL connects. If empty, uses the built-in
    ; MySQL defaults.
    mysql.default_socket =

    ; Default host for mysql_connect() (doesn't apply in safe mode).
    mysql.default_host =

    ; Default user for mysql_connect() (doesn't apply in safe mode).
    mysql.default_user =

    ; Default password for mysql_connect() (doesn't apply in safe mode).
    ; Note that this is generally a *bad* idea to store passwords in this file.
    ; *Any* user with PHP access can run 'echo get_cfg_var("mysql.default_password")
    ; and reveal this password! And of course, any users with read access to this
    ; file will be able to reveal the password as well.
    mysql.default_password =

    ; Maximum time (in seconds) for connect timeout. -1 means no limit
    mysql.connect_timeout = 60

    ; Trace mode. When trace_mode is active (=On), warnings for table/index scans and
    ; SQL-Errors will be displayed.
    mysql.trace_mode = Off

    [MySQLi]

    ; Maximum number of links. -1 means no limit.
    mysqli.max_links = -1

    ; Default port number for mysqli_connect(). If unset, mysqli_connect() will use
    ; the $MYSQL_TCP_PORT or the mysql-tcp entry in /etc/services or the
    ; compile-time value defined MYSQL_PORT (in that order). Win32 will only look
    ; at MYSQL_PORT.
    mysqli.default_port = 3306

    ; Default socket name for local MySQL connects. If empty, uses the built-in
    ; MySQL defaults.
    mysqli.default_socket =

    ; Default host for mysql_connect() (doesn't apply in safe mode).
    mysqli.default_host =

    ; Default user for mysql_connect() (doesn't apply in safe mode).
    mysqli.default_user =

    ; Default password for mysqli_connect() (doesn't apply in safe mode).
    ; Note that this is generally a *bad* idea to store passwords in this file.
    ; *Any* user with PHP access can run 'echo get_cfg_var("mysqli.default_pw")
    ; and reveal this password! And of course, any users with read access to this
    ; file will be able to reveal the password as well.
    mysqli.default_pw =

    ; Allow or prevent reconnect
    mysqli.reconnect = Off

    [mSQL]
    ; Allow or prevent persistent links.
    msql.allow_persistent = On

    ; Maximum number of persistent links. -1 means no limit.
    msql.max_persistent = -1

    ; Maximum number of links (persistent+non persistent). -1 means no limit.
    msql.max_links = -1

    [OCI8]
    ; enables privileged connections using external credentials (OCI_SYSOPER, OCI_SYSDBA)
    ;oci8.privileged_connect = Off

    ; Connection: The maximum number of persistent OCI8 connections per
    ; process. Using -1 means no limit.
    ;oci8.max_persistent = -1

    ; Connection: The maximum number of seconds a process is allowed to
    ; maintain an idle persistent connection. Using -1 means idle
    ; persistent connections will be maintained forever.
    ;oci8.persistent_timeout = -1

    ; Connection: The number of seconds that must pass before issuing a
    ; ping during oci_pconnect() to check the connection validity. When
    ; set to 0, each oci_pconnect() will cause a ping. Using -1 disables
    ; pings completely.
    ;oci8.ping_interval = 60

    ; Tuning: This option enables statement caching, and specifies how
    ; many statements to cache. Using 0 disables statement caching.
    ;oci8.statement_cache_size = 20

    ; Tuning: Enables statement prefetching and sets the default number of
    ; rows that will be fetched automatically after statement execution.
    ;oci8.default_prefetch = 10

    ; Compatibility. Using On means oci_close() will not close
    ; oci_connect() and oci_new_connect() connections.
    ;oci8.old_oci_close_semantics = Off

    [PostgresSQL]
    ; Allow or prevent persistent links.
    pgsql.allow_persistent = On

    ; Detect broken persistent links always with pg_pconnect().
    ; Auto reset feature requires a little overheads.
    pgsql.auto_reset_persistent = Off

    ; Maximum number of persistent links. -1 means no limit.
    pgsql.max_persistent = -1

    ; Maximum number of links (persistent+non persistent). -1 means no limit.
    pgsql.max_links = -1

    ; Ignore PostgreSQL backends Notice message or not.
    ; Notice message logging require a little overheads.
    pgsql.ignore_notice = 0

    ; Log PostgreSQL backends Noitce message or not.
    ; Unless pgsql.ignore_notice=0, module cannot log notice message.
    pgsql.log_notice = 0

    [Sybase]
    ; Allow or prevent persistent links.
    sybase.allow_persistent = On

    ; Maximum number of persistent links. -1 means no limit.
    sybase.max_persistent = -1

    ; Maximum number of links (persistent + non-persistent). -1 means no limit.
    sybase.max_links = -1

    ;sybase.interface_file = "/usr/sybase/interfaces"

    ; Minimum error severity to display.
    sybase.min_error_severity = 10

    ; Minimum message severity to display.
    sybase.min_message_severity = 10

    ; Compatibility mode with old versions of PHP 3.0.
    ; If on, this will cause PHP to automatically assign types to results according
    ; to their Sybase type, instead of treating them all as strings. This
    ; compatibility mode will probably not stay around forever, so try applying
    ; whatever necessary changes to your code, and turn it off.
    sybase.compatability_mode = Off

    [Sybase-CT]
    ; Allow or prevent persistent links.
    sybct.allow_persistent = On

    ; Maximum number of persistent links. -1 means no limit.
    sybct.max_persistent = -1

    ; Maximum number of links (persistent + non-persistent). -1 means no limit.
    sybct.max_links = -1

    ; Minimum server message severity to display.
    sybct.min_server_severity = 10

    ; Minimum client message severity to display.
    sybct.min_client_severity = 10

    [bcmath]
    ; Number of decimal digits for all bcmath functions.
    bcmath.scale = 0

    [browscap]
    ;browscap = extra/browscap.ini

    [Informix]
    ; Default host for ifx_connect() (doesn't apply in safe mode).
    ifx.default_host =

    ; Default user for ifx_connect() (doesn't apply in safe mode).
    ifx.default_user =

    ; Default password for ifx_connect() (doesn't apply in safe mode).
    ifx.default_password =

    ; Allow or prevent persistent links.
    ifx.allow_persistent = On

    ; Maximum number of persistent links. -1 means no limit.
    ifx.max_persistent = -1

    ; Maximum number of links (persistent + non-persistent). -1 means no limit.
    ifx.max_links = -1

    ; If on, select statements return the contents of a text blob instead of its id.
    ifx.textasvarchar = 0

    ; If on, select statements return the contents of a byte blob instead of its id.
    ifx.byteasvarchar = 0

    ; Trailing blanks are stripped from fixed-length char columns. May help the
    ; life of Informix SE users.
    ifx.charasvarchar = 0

    ; If on, the contents of text and byte blobs are dumped to a file instead of
    ; keeping them in memory.
    ifx.blobinfile = 0

    ; NULL's are returned as empty strings, unless this is set to 1. In that case,
    ; NULL's are returned as string 'NULL'.
    ifx.nullformat = 0

    [Session]
    ; Handler used to store/retrieve data.
    session.save_handler = files

    ; Argument passed to save_handler. In the case of files, this is the path
    ; where data files are stored. Note: Windows users have to change this
    ; variable in order to use PHP's session functions.
    ;
    ; As of PHP 4.0.1, you can define the path as:
    ;
    ; session.save_path = "N;/path"
    ;
    ; where N is an integer. Instead of storing all the session files in
    ; /path, what this will do is use subdirectories N-levels deep, and
    ; store the session data in those directories. This is useful if you
    ; or your OS have problems with lots of files in one directory, and is
    ; a more efficient layout for servers that handle lots of sessions.
    ;
    ; NOTE 1: PHP will not create this directory structure automatically.
    ; You can use the script in the ext/session dir for that purpose.
    ; NOTE 2: See the section on garbage collection below if you choose to
    ; use subdirectories for session storage
    ;
    ; The file storage module creates files using mode 600 by default.
    ; You can change that by using
    ;
    ; session.save_path = "N;MODE;/path"
    ;
    ; where MODE is the octal representation of the mode. Note that this
    ; does not overwrite the process's umask.
    ;session.save_path = "/tmp"

    ; Whether to use cookies.
    session.use_cookies = 1

    ;session.cookie_secure =

    ; This option enables administrators to make their users invulnerable to
    ; attacks which involve passing session ids in URLs; defaults to 0.
    ; session.use_only_cookies = 1

    ; Name of the session (used as cookie name).
    session.name = PHPSESSID

    ; Initialize session on request startup.
    session.auto_start = 0

    ; Lifetime in seconds of cookie or, if 0, until browser is restarted.
    session.cookie_lifetime = 0

    ; The path for which the cookie is valid.
    session.cookie_path = /

    ; The domain for which the cookie is valid.
    session.cookie_domain =

    ; Whether or not to add the httpOnly flag to the cookie, which makes it inaccessible to browser scripting languages such as JavaScript.
    session.cookie_httponly =

    ; Handler used to serialize data. php is the standard serializer of PHP.
    session.serialize_handler = php

    ; Define the probability that the 'garbage collection' process is started
    ; on every session initialization.
    ; The probability is calculated by using gc_probability/gc_divisor,
    ; e.g. 1/100 means there is a 1% chance that the GC process starts
    ; on each request.

    session.gc_probability = 1
    session.gc_divisor = 1000

    ; After this number of seconds, stored data will be seen as 'garbage' and
    ; cleaned up by the garbage collection process.
    session.gc_maxlifetime = 1440

    ; NOTE: If you are using the subdirectory option for storing session files
    ; (see session.save_path above), then garbage collection does *not*
    ; happen automatically. You will need to do your own garbage
    ; collection through a shell script, cron entry, or some other method.
    ; For example, the following script would is the equivalent of
    ; setting session.gc_maxlifetime to 1440 (1440 seconds = 24 minutes):
    ; cd /path/to/sessions; find -cmin +24 xargs rm

    ; PHP 4.2 and less have an undocumented feature/bug that allows you to
    ; to initialize a session variable in the global scope, albeit register_globals
    ; is disabled. PHP 4.3 and later will warn you, if this feature is used.
    ; You can disable the feature and the warning separately. At this time,
    ; the warning is only displayed, if bug_compat_42 is enabled.

    session.bug_compat_42 = 0
    session.bug_compat_warn = 1

    ; Check HTTP Referer to invalidate externally stored URLs containing ids.
    ; HTTP_REFERER has to contain this substring for the session to be
    ; considered as valid.
    session.referer_check =

    ; How many bytes to read from the file.
    session.entropy_length = 0

    ; Specified here to create the session id.
    session.entropy_file =

    ;session.entropy_length = 16

    ;session.entropy_file = /dev/urandom

    ; Set to {nocache,private,public,} to determine HTTP caching aspects
    ; or leave this empty to avoid sending anti-caching headers.
    session.cache_limiter = nocache

    ; Document expires after n minutes.
    session.cache_expire = 180

    ; trans sid support is disabled by default.
    ; Use of trans sid may risk your users security.


  • Hi, thanks for that suggestion LeatherNeck. I have now installed PHP in c:PHP instead.

    However unfortunately it hasn't fixed the error :confused::mad:. Do you have any other suggestions as well?

    Thanks very much







  • #If you have any other info about this subject , Please add it free.#
    Your name:
    E-mail:
    Telphone:

    Your comments:


    If you have any other info about Web server optimisation , Please add it free.