Puncte:1

Cum pot configura mai multe aplicații Django folosind Supervisor (inclusiv Gunicorn și Nginx)? bind() to [::]:8090 a eșuat (98: Adresă deja utilizată)

drapel us

Am implementat deja o aplicație Django/Wagtail folosind Supervisor, Gunicorn și Nginx (pe Debian Buster), așa că pot ajunge la ea cu http://xx.xxx.xxx.xxx:8090.

/etc/nginx/sites-available/cms

Server {
    nume_server xx.xxx.xxx.xxx;
    asculta 8090;
    asculta [::]:8090 ipv6only=on;
    error_log /home/www.mysite.com/.local/share/virtualenvs/cms-WqsZ9qOt/var/log/gunicorn-error.log;
    access_log /home/www.mysite.com/.local/share/virtualenvs/cms-WqsZ9qOt/var/log/gunicorn-access.log;

    locație = /favicon.ico { access_log off; log_not_found off; }
    locație /static/ {
        root /home/www.mysite.com/www/my-site/cms/admin_panel;
    }
        locație /media/ {
        root /home/www.mysite.com/www/my-site/cms/admin_panel;
    }

    Locație / {
        include proxy_params;
        proxy_pass http://unix:/home/www.mysite.com/.local/share/virtualenvs/cms-WqsZ9qOt/run/gunicorn.sock;
    }
}
/etc/supervisor/conf.d/guni-mysite-admin.conf

[program:guni-mysite-admin]
command=/home/www.mysite.com/.local/share/virtualenvs/cms-WqsZ9qOt/bin/gunicorn admin_panel.wsgi:application --config /home/www.mysite.com/.local/share/virtualenvs/cms -WqsZ9qOt/etc/gunicorn/conf.py
utilizator=www.mysite.com
autostart=true
pornire automată=adevărat
/etc/supervisor/conf.d/nginx-mysite-admin.conf

[program:nginx-mysite-admin]
command=/usr/sbin/nginx -g "daemon off;"
autostart=true
pornire automată=adevărat
stderr_logfile=/home/www.mysite.com/.local/share/virtualenvs/cms-WqsZ9qOt/var/log/nginx-error.log
stdout_logfile=/home/www.mysite.com/.local/share/virtualenvs/cms-WqsZ9qOt/var/log/nginx-access.log
stderr_logfile_maxbytes=2MB
stdout_logfile_maxbytes=2MB
/home/www.mysite.com/.local/share/virtualenvs/cms-WqsZ9qOt/etc/gunicorn/conf.py

muncitori = 3
menține în viață = 5
utilizator = „www.mysite.com”
proc_name = 'admin_panel'
loglevel = „eroare”
errorlog = '/home/www.mysite.com/.local/share/virtualenvs/cms-WqsZ9qOt/var/log/gunicorn-error.log'
accesslog = '/home/www.mysite.com/.local/share/virtualenvs/cms-WqsZ9qOt/var/log/gunicorn-access.log'
bind = 'unix:/home/www.mysite.com/.local/share/virtualenvs/cms-WqsZ9qOt/run/gunicorn.sock'
raw_env = ['DJANGO_SETTINGS_MODULE=admin_panel.settings.production']
pythonpath = '/home/www.mysite.com/www/mysite/cms/admin_panel'

Acum am adăugat încă 2 aplicații Django în același mod. Din păcate, supervizorul nu le poate aduce în discuție. Uneori, 1 din 3 rulări, dar de cele mai multe ori niciunul nu funcționează. În cazul în care funcționează, creează 3 procese (dacă așa ar trebui să fie).

$ sudo lsof -i:8090

COMANDA PID UTILIZATOR TIP FD DIMENSIUNEA DISPOZITIV/OPRIT NUMELE NODULUI
nginx 3631 root 16u IPv4 961301189 0t0 TCP *:8090 (ASCULTATE)
nginx 3631 root 17u IPv6 961301190 0t0 TCP *:8090 (ASCULTATE)
nginx 3632 www-data 16u IPv4 961301189 0t0 TCP *:8090 (ASCULTATE)
nginx 3632 www-data 17u IPv6 961301190 0t0 TCP *:8090 (ASCULTATE)
nginx 3633 www-data 16u IPv4 961301189 0t0 TCP *:8090 (ASCULTATE)
nginx 3633 www-data 17u IPv6 961301190 0t0 TCP *:8090 (ASCULTATE)

Jurnalul de erori Nginx oferă 98: Adresă deja utilizată, chiar și pe portul 81 (l-a luat ca port implicit deoarece Apache folosește 80), care nu este folosit. Apache nu ar trebui să fie problema, pentru că nu funcționează, chiar și atunci când Apache este oprit.

/var/log/nginx/error.log

...
2021/08/06 12:41:54 [emerg] 24927#24927: bind() to [::]:4020 a eșuat (98: Adresă deja utilizată)
2021/08/06 12:41:54 [emerg] 24927#24927: bind() to [::]:8090 nu a reușit (98: Adresă deja utilizată)
2021/08/06 12:41:54 [emerg] 24927#24927: bind() to [::]:81 a eșuat (98: Adresă deja utilizată)
2021/08/06 12:41:54 [emerg] 24927#24927: bind() to [::]:8070 a eșuat (98: Adresă deja utilizată)
2021/08/06 12:41:54 [emerg] 24927#24927: bind() to [::]:8080 nu a reușit (98: Adresă deja utilizată)
2021/08/06 12:41:54 [emerg] 24927#24927: bind() to [::]:4030 a eșuat (98: Adresă deja utilizată)
2021/08/06 12:41:54 [emerg] 24928#24928: încă nu s-a putut lega ()
...

Ieșire - # nginx -T

nginx: sintaxa fișierului de configurare /etc/nginx/nginx.conf este ok
nginx: fișierul de configurare /etc/nginx/nginx.conf testul a reușit
# fișier de configurare /etc/nginx/nginx.conf:
utilizator www-date;
worker_proceses auto;
pid /run/nginx.pid;
includ /etc/nginx/modules-enabled/*.conf;

evenimente {
    conexiuni_muncitor 768;
    # multi_accept on;
}

http {

    ##
    # Setări de bază
    ##

    sendfile activat;
    tcp_nopush activat;
    tcp_nodelay activat;
    keepalive_timeout 65;
    types_hash_max_size 2048;
    # server_tokens off;

    # server_names_hash_bucket_size 64;
    # server_name_in_redirect off;

    includ /etc/nginx/mime.types;
    aplicație de tip_default/octet-stream;

    ##
    # Setări SSL
    ##

    ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Eliminarea SSLv3, ref: POODLE
    ssl_prefer_server_ciphers activat;

    ##
    # Setări de înregistrare
    ##

    access_log /var/log/nginx/access.log;
    error_log /var/log/nginx/error.log;

    ##
    # Setări Gzip
    ##

    gzip on;

    # gzip_vary on;
    # gzip_proxied orice;
    # gzip_comp_level 6;
    # gzip_buffers 16 8k;
    # gzip_http_version 1.1;
    # gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;

    ##
    # Configurații gazdă virtuală
    ##

    includ /etc/nginx/conf.d/*.conf;
    includ /etc/nginx/sites-enabled/*;
}


#Poștă {
# # Vezi exemplu de script de autentificare la:
# # http://wiki.nginx.org/ImapAuthenticateWithApachePhpScript
#
# # auth_http localhost/auth.php;
# # pop3_capabilities „TOP” „USER”;
# # imap_capabilities „IMAP4rev1” „UIDPLUS”;
#
#   Server {
# asculta localhost:110;
# protocol pop3;
# proxy activat;
#}
#
#   Server {
# asculta localhost:143;
# protocol imap;
# proxy activat;
#}
#}

# fișier de configurare /etc/nginx/modules-enabled/50-mod-http-auth-pam.conf:
load_module modules/ngx_http_auth_pam_module.so;

# fișier de configurare /etc/nginx/modules-enabled/50-mod-http-dav-ext.conf:
load_module modules/ngx_http_dav_ext_module.so;

# fișier de configurare /etc/nginx/modules-enabled/50-mod-http-echo.conf:
load_module modules/ngx_http_echo_module.so;

# fișier de configurare /etc/nginx/modules-enabled/50-mod-http-geoip.conf:
load_module modules/ngx_http_geoip_module.so;

# fișier de configurare /etc/nginx/modules-enabled/50-mod-http-image-filter.conf:
load_module modules/ngx_http_image_filter_module.so;

# fișier de configurare /etc/nginx/modules-enabled/50-mod-http-subs-filter.conf:
load_module modules/ngx_http_subs_filter_module.so;

# fișier de configurare /etc/nginx/modules-enabled/50-mod-http-upstream-fair.conf:
load_module modules/ngx_http_upstream_fair_module.so;

# fișier de configurare /etc/nginx/modules-enabled/50-mod-http-xslt-filter.conf:
load_module modules/ngx_http_xslt_filter_module.so;

# fișier de configurare /etc/nginx/modules-enabled/50-mod-mail.conf:
load_module modules/ngx_mail_module.so;

# fișier de configurare /etc/nginx/modules-enabled/50-mod-stream.conf:
load_module modules/ngx_stream_module.so;

# fișier de configurare /etc/nginx/mime.types:

tipuri {
    text/html html htm shtml;
    text/css css;
    text/xml xml;
    imagine/gif gif;
    imagine/jpeg jpeg jpg;
    aplicație/javascript js;
    aplicație/atom+xml atom;
    aplicație/rss+xml rss;

    text/mathml mml;
    text/txt simplu;
    text/vnd.sun.j2me.app-descriptor jad;
    text/vnd.wap.wml wml;
    text/x-component htc;

    imagine/png png;
    imagine/tiff tif tiff;
    imagine/vnd.wap.wbmp wbmp;
    imagine/x-icoană ico;
    imagine/x-jng jng;
    imagine/x-ms-bmp bmp;
    imagine/svg+xml svg svgz;
    imagine/webp webp;

    aplicație/font-woff woff;
    aplicație/java-arhivă jar war ear;
    aplicație/json json;
    aplicație/mac-binhex40 hqx;
    aplicație/msword doc;
    cerere/pdf pdf;
    aplicație/postscript ps eps ai;
    aplicație/rtf rtf;
    application/vnd.apple.mpegurl m3u8;
    application/vnd.ms-excel xls;
    application/vnd.ms-fontobject eot;
    application/vnd.ms-powerpoint ppt;
    application/vnd.wap.wmlc wmlc;
    application/vnd.google-earth.kml+xml kml;
    application/vnd.google-earth.kmz kmz;
    aplicație/x-7z-comprimat 7z;
    aplicare/x-cacao cco;
    application/x-java-archive-diff jardiff;
    aplicație/x-java-jnlp-fișier jnlp;
    aplicație/x-makeself rulează;
    application/x-perl pl pm;
    application/x-pilot prc pdb;
    application/x-rar-compressed rar;
    application/x-redhat-package-manager rpm;
    aplicare/x-mare mare;
    aplicație/x-shockwave-flash swf;
    application/x-stuffit sit;
    aplicație/x-tcl tcl tk;
    application/x-x509-ca-cert der pem crt;
    aplicație/x-xpinstall xpi;
    aplicație/xhtml+xml xhtml;
    aplicație/xspf+xml xspf;
    aplicare/zip zip;

    aplicație/octet-stream bin exe dll;
    application/octet-stream deb;
    application/octet-stream dmg;
    application/octet-stream iso img;
    aplicație/octet-stream msi msp msm;

    application/vnd.openxmlformats-officedocument.wordprocessingml.document docx;
    application/vnd.openxmlformats-officedocument.spreadsheetml.sheet xlsx;
    application/vnd.openxmlformats-officedocument.presentationml.presentation pptx;

    audio/midi mid midi kar;
    audio/mpeg mp3;
    audio/ogg ogg;
    audio/x-m4a m4a;
    audio/x-realaudio ra;

    video/3gpp 3gpp 3gp;
    video/mp2t ts;
    video/mp4 mp4;
    video/mpeg mpeg mpg;
    video/quicktime mov;
    video/webm webm;
    video/x-flv flv;
    video/x-m4v m4v;
    video/x-mng mng;
    video/x-ms-asf asx asf;
    video/x-ms-wmv wmv;
    video/x-msvideo avi;
}

# fișier de configurare /etc/nginx/conf.d/timeout.conf:
proxy_connect_timeout 600;
proxy_send_timeout 600;
proxy_read_timeout 600;
send_timeout 600;

# fișier de configurare /etc/nginx/sites-enabled/admin.mysite_2:
Server {
    nume_server xx.xxx.xxx.xxx;
    asculta 4020;
    asculta [::]:4020 ipv6only=on;
    error_log /home/www.mysite_2/.local/share/virtualenvs/cms-CiomF2CE/var/log/gunicorn-error.log;
    access_log /home/www.mysite_2/.local/share/virtualenvs/cms-CiomF2CE/var/log/gunicorn-access.log;

    # add_header 'Acces-Control-Allow-Origin' '*';
    # add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
    # add_header 'Access-Control-Allow-Headers' 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range';

    locație = /favicon.ico { access_log off; log_not_found off; }
    locație /static/ {
        root /home/mysite_2/www/translator-app-python/cms/wagtail_cms;
    }
        locație /media/ {
        root /home/mysite_2/www/translator-app-python/cms/wagtail_cms;
    }

    Locație / {
        include proxy_params;
        proxy_pass http://unix:/home/mysite_2/.local/share/virtualenvs/cms-CiomF2CE/run/gunicorn.sock;
    }
}
# fișier de configurare /etc/nginx/proxy_params:
proxy_set_header Gazdă $http_host;
proxy_set_header X-Real-IP $adresă_la distanță;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $schema;

# fișier de configurare /etc/nginx/sites-enabled/cms:
Server {
    nume_server xx.xxx.xxx.xxx;
    asculta 8090;
    asculta [::]:8090 ipv6only=on;
    error_log /home/mysite_1/.local/share/virtualenvs/cms-WqsZ9qOt/var/log/gunicorn-error.log;
    access_log /home/mysite_1/.local/share/virtualenvs/cms-WqsZ9qOt/var/log/gunicorn-access.log;

    # add_header 'Acces-Control-Allow-Origin' '*';
    # add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
    # add_header 'Access-Control-Allow-Headers' 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range';

    locație = /favicon.ico { access_log off; log_not_found off; }
    locație /static/ {
        root /home/mysite_1/www/kc-site/cms/admin_panel;
    }
        locație /media/ {
        root /home/wmysite_1/www/kc-site/cms/admin_panel;
    }

    Locație / {
        include proxy_params;
        proxy_pass http://unix:/home/mysite_1/.local/share/virtualenvs/cms-WqsZ9qOt/run/gunicorn.sock;
    }
}
# fișier de configurare /etc/nginx/sites-enabled/default:
##
# Ar trebui să vă uitați la următoarele adrese URL pentru a înțelege o înțelegere solidă
# de fișiere de configurare Nginx pentru a elibera pe deplin puterea lui Nginx.
# https://www.nginx.com/resources/wiki/start/
# https://www.nginx.com/resources/wiki/start/topics/tutorials/config_pitfalls/
# https://wiki.debian.org/Nginx/DirectoryStructure
#
# În majoritatea cazurilor, administratorii vor elimina acest fișier de pe site-uri activate/ și
# lăsați-l ca referință în interiorul site-urilor-disponibil acolo unde va continua să fie
# actualizat de echipa de ambalare nginx.
#
# Acest fișier va încărca automat fișierele de configurare furnizate de alții
# aplicații, cum ar fi Drupal sau Wordpress. Aceste cereri se vor face
# disponibil sub o cale cu acel nume de pachet, cum ar fi /drupal8.
#
# Consultați /usr/share/doc/nginx-doc/examples/ pentru exemple mai detaliate.
##

# Configurația implicită a serverului
#
Server {
    # alte Sintaxă
    asculta 81 default_server;
    asculta [::]:81 ipv6only=on default_server;

    # Configurare SSL
    #
    # asculta 443 ssl default_server;
    # asculta [::]:443 ssl default_server;
    #
    # Notă: ar trebui să dezactivați gzip pentru traficul SSL.
    # Vezi: https://bugs.debian.org/773332
    #
    # Citiți ssl_ciphers pentru a asigura o configurație sigură.
    # Vezi: https://bugs.debian.org/765782
    #
    # Certificate autosemnate generate de pachetul ssl-cert
    # Nu le folosiți pe un server de producție!
    #
    # include snippets/snakeoil.conf;

    rădăcină /var/www/html/Nginx;

    # Adăugați index.php la listă dacă utilizați PHP
    index index.html index.htm index.nginx-debian.html index.php ;

    numele serverului _;

    Locație / {
        # Mai întâi încercați să serviți cererea ca fișier, apoi
        # ca director, apoi reveniți la afișarea unui 404.
        try_files $uri $uri/ =404;
    }

    # treceți scripturi PHP către serverul FastCGI (neu)
    #
    locație ~ \.php$ {
        include snippets/fastcgi-php.conf;
        includ /etc/nginx/conf.d/*.conf;
        fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
    }

    # treceți scripturile PHP către serverul FastCGI
    #
    #locație ~ \.php$ {
    # include snippets/fastcgi-php.conf;
    #
    # # Cu php-fpm (sau alte socket-uri Unix):
    # fastcgi_pass unix:/run/php/php7.3-fpm.sock;
    # # Cu php-cgi (sau alte socket-uri tcp):
    # # fastcgi_pass 127.0.0.1:9000;
    #}

    # interzice accesul la fișierele .htaccess, dacă rădăcina documentului Apache
    # de acord cu cel al lui nginx
    #
    #locație ~ /\.ht {
    # nega totul;
    #}
}


# Configurarea gazdei virtuale pentru example.com
#
# Puteți muta asta într-un fișier diferit sub site-available/ și puteți trimite simbolul
# la site-uri activate/ pentru a-l activa.
#
#Server {
# asculta 80;
# asculta [::]:80;
#
# server_name example.com;
#
# root /var/www/example.com;
# index index.html;
#
#   Locație / {
# try_files $uri $uri/ =404;
#}
#}

# fișier de configurare /etc/nginx/snippets/fastcgi-php.conf:
# regex pentru a împărți $uri în $fastcgi_script_name și $fastcgi_path
fastcgi_split_path_info ^(.+?\.php)(/.*)$;

# Verificați dacă scriptul PHP există înainte de a-l transmite
try_files $fastcgi_script_name =404;

# Ocoliți faptul că try_files resetează $fastcgi_path_info
# vezi: http://trac.nginx.org/nginx/ticket/321
setați $path_info $fastcgi_path_info;
fastcgi_param PATH_INFO $path_info;

fastcgi_index index.php;
include fastcgi.conf;

# fișier de configurare /etc/nginx/fastcgi.conf:

fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param QUERY_STRING $șir_interogare;
fastcgi_param REQUEST_METHOD $cerere_method;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_param CONTENT_LENGTH $content_length;

fastcgi_param SCRIPT_NAME $fastcgi_script_name;
fastcgi_param REQUEST_URI $request_uri;
fastcgi_param DOCUMENT_URI $document_uri;
fastcgi_param DOCUMENT_ROOT $document_root;
fastcgi_param SERVER_PROTOCOL $server_protocol;
fastcgi_param REQUEST_SCHEME $schemă;
fastcgi_param HTTPS $https dacă_nu_vide;

fastcgi_param GATEWAY_INTERFACE CGI/1.1;
fastcgi_param SERVER_SOFTWARE nginx/$nginx_version;

fastcgi_param REMOTE_ADDR $adresă_la distanță;
fastcgi_param REMOTE_PORT $remote_port;
fastcgi_param SERVER_ADDR $adresa_server;
fastcgi_param SERVER_PORT $server_port;
fastcgi_param SERVER_NAME $server_name;

# Numai PHP, necesar dacă PHP a fost construit cu --enable-force-cgi-redirect
fastcgi_param REDIRECT_STATUS 200;

# fișier de configurare /etc/nginx/sites-enabled/kcanalytics:
Server {
    nume_server xx.xxx.xxx.xxx;
    asculta 8070;
    asculta [::]:8070 ipv6only=on;
    root /home/mysite_1/www/kc-site/Open-Web-Analytics;
    index index.php index.html index.htm;
    Locație / {
        try_files $uri $uri/ =404;
    }
    locație ~ \.php$ {
        include snippets/fastcgi-php.conf;
        includ /etc/nginx/conf.d/*.conf;
        fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
    }
    error_log /var/log/nginx/kcanalyticslog/kcanalytics-error.log;
    access_log /var/log/nginx/kcanalyticslog/kcanalytics-access.log;
}

# fișier de configurare /etc/nginx/sites-enabled/kcclient:
Server {
    nume_server xx.xxx.xxx.xxx;
    asculta 8080;
    asculta [::]:8080 ipv6only=on;
    rădăcină /var/www/html/Nginx;
    index index.nginx-debian.html;

    Locație / {
    proxy_pass http://localhost:3000;
    proxy_http_versiunea 1.1;
    proxy_set_header Actualizare $http_upgrade;
    proxy_set_header Conexiune „upgrade”;
    proxy_set_header Gazdă $gazdă;
    proxy_cache_bypass $http_upgrade;
    }
}

# fișier de configurare /etc/nginx/sites-enabled/phrases-api.mysite_2:
Server {
    nume_server xx.xxx.xxx.xxx;
    asculta 4030;
    asculta [::]:4030 ipv6only=on;
    error_log /home/mysite_2/.local/share/virtualenvs/api-dAF0CRIW/var/log/gunicorn-error.log;
    access_log /home/mysite_2/.local/share/virtualenvs/api-dAF0CRIW/var/log/gunicorn-access.log;

    # add_header 'Acces-Control-Allow-Origin' '*';
    # add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
    # add_header 'Access-Control-Allow-Headers' 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range';

    locație = /favicon.ico { access_log off; log_not_found off; }
    locație /static/ {
        root /home/mysite_2/www/translator-app-python/api/translator_rest_api;
    }
        locație /media/ {
        root /home/mysite_2/www/translator-app-python/api/translator_rest_api;
    }

    Locație / {
        include proxy_params;
        proxy_pass http://unix:/home/mysite_2/.local/share/virtualenvs/api-dAF0CRIW/run/gunicorn.sock;
    }
}
Michael Hampton avatar
drapel cz
De ce naiba folosești supervizor?
djdomi avatar
drapel za
apropo `ascultă 8090; ascultă [::]:8090 ipv6only=on;` spune să asculți pe acel port, de ce să nu-l schimbi?
Puncte:0
drapel in

Se pare că nginx se plânge numai pentru adresa IPV6. Ai nevoie de ipv6? Dacă nu, atunci eliminarea blocurilor de ascultare pentru ipv6 va face ca nginx să pornească corect numai pe ipv4. Dacă aveți nevoie de ascultători IPV6 în nginx, atunci puteți face următoarele

cuptor -k 8090/tcp

Acest lucru va ucide portul de reținere PID 8090. Faceți același lucru pentru restul porturi de care aveți nevoie. O abordare mai dură ar fi să ucizi complet nginx (presupunând că este cel care ține porturile deschise)

pkill -f nginx și așteptați $!
repornirea serviciului nginx
Paul avatar
drapel us
Mulțumesc, ai dreptate, dar trebuie să păstrez setările IP ca aceasta pentru a avea control asupra legăturilor IPv4 și IPv6. Cu următoarea configurare am rulat cu succes doi clienți, trei API-uri, un site Wordpress și PHP Analytics fără conflicte: De exemplu, unul dintre API-uri are Apache2 HTTP Server ca proxy (ascultă portul 80) care redirecționează către Nginx ( nu este controlat de Supervisor, care este de fapt soluția!) Gunicorn este controlat de Supervisor.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.