Keine Leistung

the_condor

Registered User
Hallo Gemeinde,

System debian etch 32 bit,ispcp rc4,php5.2.6 dot ,php4.4.9 dot, mod_sec 2.11, apache 2.2.3, mysql 5.0.67, 1GB Ram und 1 GB Swap.

Das Prob was ich in der letzen Zeit mit dem Server habe, das der Load extrem hoch geht und die Seite extrem laggy wird.

Ein Apache Bench hat folgendes Ergeben:
Code:
Server Software:        Apache 
 Server Hostname:        plapla 
 Server Port:            80 
  
 Document Path:          /index.php 
 Document Length:        175127 bytes 
  
 Concurrency Level:      100 
 Time taken for tests:   1116.368964 seconds 
 Complete requests:      1000 
 Failed requests:        998 
    (Connect: 0, Length: 998, Exceptions: 0) 
 Write errors:           0 
 Non-2xx responses:      26 
 Keep-Alive requests:    0 
 Total transferred:      160550798 bytes 
 HTML transferred:       160321071 bytes 
 Requests per second:    0.90 [#/sec] (mean) 
 Time per request:       111636.902 [ms] (mean) 
 Time per request:       1116.369 [ms] (mean, across all concurrent requests) 
 Transfer rate:          140.44 [Kbytes/sec] received 
  
 Connection Times (ms) 
               min  mean[+/-sd] median   max 
 Connect:        0    3   9.6      0      34 
 Processing: 12367 105740 27953.7 110346  156789 
 Waiting:    12207 105600 27948.4 110189  156757 
 Total:      12383 105743 27948.0 110346  156789 
  
 Percentage of the requests served within a certain time (ms) 
   50%  110346 
   66%  118784 
   75%  124019 
   80%  127563 
   90%  138710 
   95%  145746 
   98%  149226 
   99%  152212 
  100%  156789 (longest request) 
 plapla:/usr/src/#

Also das Ergebniss ist extrem und auch erst seit heute Mittag so, zu diesem Zeitpunkt waren ca 30 Leute zur gleichen Zeit auf dem Server, das ist ja nix..

Die Top Ausgabe, leider nicht die wo extrem war:
Code:
top - 17:18:55 up 48 days, 19:28,  2 users,  load average: 8.77, 5.01, 5.87
Tasks: 106 total,   7 running,  99 sleeping,   0 stopped,   0 zombie
Cpu(s): 88.6%us, 11.4%sy,  0.0%ni,  0.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:    994476k total,   708544k used,   285932k free,    98012k buffers
Swap:  1044208k total,        4k used,  1044204k free,   393984k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
12092 mysql     20   0 55984  33m 4776 S 33.3  3.5  12:01.17 mysqld
24312 vu2002    20   0 25432  10m 3132 S  8.0  1.1   0:00.24 php5-cgi
24046 vu2002    20   0 25700  11m 3384 R  6.7  1.1   0:10.42 php5-cgi
21257 vu2002    20   0 20928 6460 3420 R  6.0  0.6   0:43.75 php5-cgi
24055 vu2002    20   0 23244 8980 3344 S  6.0  0.9   0:09.88 php5-cgi
21260 vu2002    20   0 25932  11m 3528 R  5.7  1.2   0:51.32 php5-cgi
24047 vu2002    20   0 25700  11m 3324 S  5.3  1.1   0:10.38 php5-cgi
24112 vu2002    20   0 25440  10m 3324 R  5.3  1.1   0:09.28 php5-cgi
24056 vu2002    20   0 25440  10m 3324 S  4.0  1.1   0:09.44 php5-cgi
24113 vu2002    20   0 25440  10m 3324 S  4.0  1.1   0:08.84 php5-cgi
24185 vu2002    20   0 25440  10m 3324 S  3.3  1.1   0:04.82 php5-cgi
24313 vu2002    20   0 25060  10m 3020 R  2.7  1.0   0:00.08 php5-cgi
24311 vu2002    20   0 19644 6000 4176 S  1.3  0.6   0:00.04 php5-cgi
23024 teamspea  20   0 81208 2648 1548 S  1.0  0.3  83:35.35 server_linux
23953 root      20   0  8836 2988 1860 S  0.7  0.3   0:00.28 ab
 5096 root      20   0 90192 3960 1412 S  0.3  0.4  38:16.46 python2.4

Apache einstellung:
Code:
<IfModule mpm_prefork_module>
    StartServers          5
    MinSpareServers       5
    MaxSpareServers      10
   ServerLimit         1024
   MaxClients          512
    MaxRequestsPerChild   0
</IfModule>

my.cnf
Code:
# * Fine Tuning
key_buffer              = 16M
max_allowed_packet      = 16M
thread_stack            = 128K
thread_cache_size       = 8
# This replaces the startup script and checks MyISAM tables if needed
# the first time they are touched
myisam-recover          = BACKUP
#max_connections        = 100
table_cache            =  580
sort_buffer_size       = 1M
read_rnd_buffer_size = 128k
max_heap_table_size = 25M
low_priority_updates=1
concurrent_insert=2
# * Query Cache Configuration
#
query_cache_limit       = 7M
query_cache_size        = 8M
#
# * Logging and Replication
#
log-slow-queries = /var/log/mysql/slow-query.log
long_query_time = 4
log-queries-not-using-indexes
skip_innodb

Kann mir jemand bei meinem Problem helfen? Ich finde einfach nicht die Richtige einstellung.

mfg
the_condor
 
Hallo!
Offenbar ein PHP Script Problem. Du hast da reichlich php5-cgi Prozesse am laufen. Finde heraus, welche(s) Script(e) dafür verantwortlich sind.

mfG
Thorsten
 
Hallo Thorsten,

ich brauche da nicht lange zu suchen, wir haben ein großes Projekt auf dem Server laufen. Als Forensoftware läuft da wbb2 sowie auch Coppermine Gallery.
Wir haben für das wbb2 extrem viele Hacks und Mods eingebaut, was wir eben halt alles brauchen. Mir ist schon aufgefallen das seit dem die mysql und php Stark beansprucht wird und der Server böse in die Knie geht.

Um ehrlich zu sein weiß ich nicht mehr was ich machen soll, hatte schon mal dran gedacht einen größeren Server zu holen mit einem anderen CPU und bissl mehr RAM.

Celeron 220 mit 1,2 GHZ ist doch zu schwach, was kannst Du mir denn unverbindlich raten.

mfg
the_condor
 
Bitte mal Augen auf machen:
Code:
24312 vu2002    20   0 25432  10m 3132 S  8.0  1.1   0:00.24 php5-cgi
24046 vu2002    20   0 25700  11m 3384 R  6.7  1.1   0:10.42 php5-cgi
21257 vu2002    20   0 20928 6460 3420 R  6.0  0.6   0:43.75 php5-cgi
24055 vu2002    20   0 23244 8980 3344 S  6.0  0.9   0:09.88 php5-cgi
21260 vu2002    20   0 25932  11m 3528 R  5.7  1.2   0:51.32 php5-cgi
24047 vu2002    20   0 25700  11m 3324 S  5.3  1.1   0:10.38 php5-cgi
Glaubst Du ganz Ehrlich daran, daß ein User 51 Minuten auf seinen Response wartet?
Hier läuft doch ein Script Amok, oder?
Überprüfe welches es ist mit mod_status und "ExtendedStatus On".

Außerdem verstehe ich nicht, warum Du ein "größeres Projekt mit wbb2 und Coppermine" mit PHP5 als CGI laufen läßt. Da kannst Du auch gleich einen Speicherriegel aus dem Server rausnehmen.

ServerLimit 1024
MaxClients 512
Und damit fährst Du den Server dann im Zweifelsfall gegen die Wand.

huschi.
 
Danke Huschi für deine Antwort,

ich hatte wirklich keinen Blick auf die Ausführungszeit gehabt. Habe mod_status nun mal angeschaltet und die apache Einstellung wieder auf die default Einstellung zurück gesetzt.

Mal kucken was mir mod-status später ausspuckt, php5-cgi ist so gewählt da wir ispcp installiert haben und dieses so der Standart dieser Installation ist.

Was wäre denn deiner Meinung nach besser, als wbb2/Coppermine in Verbindung zu php-cgi?

mfg
the_condor
 
Bei solchen (Over-)Killer-Applikationen wäre mein Vorzug ein mod_php mit einem PHP-Beschleuniger/-Cache.
- deutlich verringerter Speicherverbrauch
- schneller Ausführung
- persistente DB-Connections

huschi.
 
Danke Huschi für deine Antwort,

also die Probleme die wir haben liegen nicht nur an der langen Laufzeit von der php Anwendung, sondern auch an der mysql. Diese ist noch fast im Original Zustand und müßte mal Richtig aufgepimpt werden damit auch der mysql Server nicht so laggy ist und den Request schneller verarbeiten kann.

Klar wäre von Anfang einen andere Installation und der gleichen am besten gewessen, denoch möchte ich das ganze nicht auf mod_php umstellen, hat auch was damit zu tun das andere Mitglieder Zugang zu div Dateien haben.

Was die MYSQL Optimierung angeht bräuchte ich mal bissl Hilfe und Tipps, sei es hier selber mit der Optimierung oder durch gute Bücher oder der gleichen.

Hier mal mein show status;
Code:
Variable_name  Value  
Aborted_clients 0 
Aborted_connects 10 
Binlog_cache_disk_use 0 
Binlog_cache_use 0 
Bytes_received 493 
Bytes_sent 3780 
Com_admin_commands 0 
Com_alter_db 0 
Com_alter_table 0 
Com_analyze 0 
Com_backup_table 0 
Com_begin 0 
Com_call_procedure 0 
Com_change_db 0 
Com_change_master 0 
Com_check 0 
Com_checksum 0 
Com_commit 0 
Com_create_db 0 
Com_create_function 0 
Com_create_index 0 
Com_create_table 0 
Com_create_user 0 
Com_dealloc_sql 0 
Com_delete 0 
Com_delete_multi 0 
Com_do 0 
Com_drop_db 0 
Com_drop_function 0 
Com_drop_index 0 
Com_drop_table 0 
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 0 
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 0 
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 1 
Com_set_option 2 
Com_show_binlog_events 0 
Com_show_binlogs 0 
Com_show_charsets 1 
Com_show_collations 1 
Com_show_column_types 0 
Com_show_create_db 0 
Com_show_create_table 0 
Com_show_databases 1 
Com_show_errors 0 
Com_show_fields 0 
Com_show_grants 1 
Com_show_innodb_status 0 
Com_show_keys 0 
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 1 
Com_show_storage_engines 0 
Com_show_tables 0 
Com_show_triggers 0 
Com_show_variables 3 
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 
Variable_name  Value  
Com_unlock_tables 0 
Com_update 0 
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 ON 
Connections 35016 
Created_tmp_disk_tables 0 
Created_tmp_files 20201 
Created_tmp_tables 7 
Delayed_errors 0 
Delayed_insert_threads 0 
Delayed_writes 0 
Flush_commands 1 
Handler_commit 0 
Handler_delete 0 
Handler_discover 0 
Handler_prepare 0 
Handler_read_first 0 
Handler_read_key 0 
Handler_read_next 0 
Handler_read_prev 0 
Handler_read_rnd 0 
Handler_read_rnd_next 181 
Handler_rollback 0 
Handler_savepoint 0 
Handler_savepoint_rollback 0 
Handler_update 0 
Handler_write 307 
Innodb_buffer_pool_pages_data 0 
Innodb_buffer_pool_pages_dirty 0 
Innodb_buffer_pool_pages_flushed 0 
Innodb_buffer_pool_pages_free 0 
Innodb_buffer_pool_pages_latched 0 
Innodb_buffer_pool_pages_misc 0 
Innodb_buffer_pool_pages_total 0 
Innodb_buffer_pool_read_ahead_rnd 0 
Innodb_buffer_pool_read_ahead_seq 0 
Innodb_buffer_pool_read_requests 0 
Innodb_buffer_pool_reads 0 
Innodb_buffer_pool_wait_free 0 
Innodb_buffer_pool_write_requests 0 
Innodb_data_fsyncs 0 
Innodb_data_pending_fsyncs 0 
Innodb_data_pending_reads 0 
Innodb_data_pending_writes 0 
Innodb_data_read 0 
Innodb_data_reads 0 
Innodb_data_writes 0 
Innodb_data_written 0 
Innodb_dblwr_pages_written 0 
Innodb_dblwr_writes 0 
Innodb_log_waits 0 
Innodb_log_write_requests 0 
Innodb_log_writes 0 
Innodb_os_log_fsyncs 0 
Innodb_os_log_pending_fsyncs 0 
Innodb_os_log_pending_writes 0 
Innodb_os_log_written 0 
Innodb_page_size 0 
Innodb_pages_created 0 
Innodb_pages_read 0 
Innodb_pages_written 0 
Innodb_row_lock_current_waits 0 
Innodb_row_lock_time 0 
Innodb_row_lock_time_avg 0 
Innodb_row_lock_time_max 0 
Innodb_row_lock_waits 0 
Innodb_rows_deleted 0 
Innodb_rows_inserted 0 
Innodb_rows_read 0 
Innodb_rows_updated 0 
Key_blocks_not_flushed 0 
Key_blocks_unused 8559 
Key_blocks_used 14497 
Key_read_requests 115457828 
Key_reads 4557755 
Key_write_requests 3887905 
Key_writes 146030 
Last_query_cost 0.000000 
Max_used_connections 17 
Ndb_cluster_node_id 0 
Ndb_config_from_host   
Ndb_config_from_port 0 
Ndb_number_of_data_nodes 0 
Not_flushed_delayed_rows 0 
Open_files 103 
Open_streams 0 
Open_tables 55 
Opened_tables 0 
Prepared_stmt_count 0 
Qcache_free_blocks 28 
Qcache_free_memory 9349360 
Qcache_hits 2451112 
Qcache_inserts 732857 
Qcache_lowmem_prunes 371 
Variable_name  Value  
Qcache_not_cached 17123 
Qcache_queries_in_cache 298 
Qcache_total_blocks 671 
Questions 3435636 
Rpl_status NULL 
Select_full_join 0 
Select_full_range_join 0 
Select_range 0 
Select_range_check 0 
Select_scan 7 
Slave_open_temp_tables 0 
Slave_retried_transactions 0 
Slave_running OFF 
Slow_launch_threads 0 
Slow_queries 0 
Sort_merge_passes 0 
Sort_range 0 
Sort_rows 0 
Sort_scan 0 
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 1156014 
Table_locks_waited 2285 
Tc_log_max_pages_used 0 
Tc_log_page_size 0 
Tc_log_page_waits 0 
Threads_cached 6 
Threads_connected 2 
Threads_created 123 
Threads_running 1 
Uptime 149823 
Uptime_since_flush_status 149823

Meine Probleme sind Handler_read_rnd,Handler_read_rnd_next,Qcache_lowmem_prunes,Created_tmp_disk_tables,Key_reads,Select_full_join,Opened_tables,Table_locks_waited

jetzt muß ich kucken das ich hier eine Optimale Einstellung finde.

mfg
the_condor
 
@ Huschi

das habe ich schon lange durch, genauso wie das mysqltuner Script wo es da gibt.
Ich habe heute morgen Werte der mysql geändert und warte jetzt mal 2 Tage ab wie es sich weiter entwickelt.

Mein Provider hat mir auch mal vorgeschlagen ein RAM und CPU Test zu machen, wenn das nicht fruchtet.

mfg
the_condor
 
-> slow-query-log anschalten und auch die nicht indizierten Abfragen ermitteln.

Eine Indizierung der Tabellen bewirkt manchmal wunder.
SQL Statements immer auf den Prüfstand stellen und sich explizit mit dem Fetchplan auseinander setzen. Manchmal tun sich Abgründe auf, die man nur noch mit force index eingefangen bekommt.
 
Hallo,

System debian etch 32 bit,ispcp rc4

Da gab es mal was zu Optimieren.

Original Dateien sichern und alles ohne Gewähr !

In der:

/etc/apache2/apache2.conf

folgendes abändern:

# worker MPM
# StartServers: initial number of server processes to start
# MaxClients: maximum number of simultaneous client connections
# MinSpareThreads: minimum number of worker threads which are kept spare
# MaxSpareThreads: maximum number of worker threads which are kept spare
# ThreadsPerChild: constant number of worker threads in each server process
# MaxRequestsPerChild: maximum number of requests a server process serves
<IfModule mpm_worker_module>
StartServers 1
MaxClients 100
MinSpareThreads 1
MaxSpareThreads 50
ThreadsPerChild 10
MaxRequestsPerChild 5000
</IfModule>


/etc/init.d/apache2 force-reload


In der:
/etc/mysql/my.cnf

folgendes abändern:

#
# * Fine Tuning
#
key_buffer = 1M
max_allowed_packet = 8M
thread_stack = 64K
thread_cache_size = 8
#max_connections = 100
#table_cache = 64
#thread_concurrency = 10
#
# * Query Cache Configuration
#
query_cache_limit = 1M
query_cache_size = 8M


/etc/init.d/mysql restart

Das war mal für die RC3.
 
1. Apache richtig konfigurieren
2. nicht benötigte Apache Module deaktivieren (mit # ausklammern)
3. MySQL Parameter richtig konfigurieren

Wahrscheinlich hast du KeepAliveTimeout noch auf 15, dann wundert mich eh nichts mehr.

Apache + MySQL Performance Tuning

Am besten du postest mal deine
Code:
/etc/httpd/conf/httpd.conf

oder

/etc/apache2/server-tuning.conf

und deine
Code:
/etc/my.cnf

und ein
Code:
ps -ylC httpd --sort:rss

und ein Auszug von Tuning-Primer Script
 
Last edited by a moderator:
Back
Top